【发布时间】:2026-01-29 09:50:01
【问题描述】:
任何人都可以解释什么是内部手段以及如何从像素图呈现窗口边框?谢谢。
源码链接:https://github.com/wmutils/opt/blob/master/chwb2.c#L72
xcb_rectangle_t inner[] = {
/* you're not supposed to understand this. */
{ w,0,b-o ,h+b- o },
{ w+b +o, 0, b -o, h+ b - o},
{ 0,h ,w+b -o,b- o },
{ 0,h +b+ o, w+ b- o, b -o},
{ w+b+o,b +h +o,b,b}
};
xcb_rectangle_t outer[] = {
{w + b - o, 0, o, h + b * 2},
{w + b, 0, o, h + b * 2},
{0, h + b - o, w + b * 2, o},
{0, h + b, w + b * 2, o},
{1, 1, 1, 1}
};
xcb_pixmap_t pmap = xcb_generate_id(conn);
xcb_create_pixmap(conn, geom->depth, pmap, win,
geom->width + (b*2),
geom->height + (b*2));
xcb_gcontext_t gc = xcb_generate_id(conn);
xcb_create_gc(conn, gc, pmap, 0, NULL);
values[0] = oc;
xcb_change_gc(conn, gc, XCB_GC_FOREGROUND, values);
xcb_poly_fill_rectangle(conn, pmap, gc, 5, outer);
values[0] = ic;
xcb_change_gc(conn, gc, XCB_GC_FOREGROUND, values);
xcb_poly_fill_rectangle(conn, pmap, gc, 5, inner);
values[0] = pmap;
xcb_change_window_attributes(conn, win, XCB_CW_BORDER_PIXMAP, values);
【问题讨论】:
标签: xlib xorg window-managers xcb