inline void set_transparent_background(Window win) { static int colour_set = -1; if (set_transparent) { /* Window parent = win; unsigned int i; for (i = 0; i < 50 && parent != RootWindow(display, screen); i++) { Window r, *children; unsigned int n; XSetWindowBackgroundPixmap(display, parent, ParentRelative); XQueryTree(display, parent, &r, &parent, &children, &n); XFree(children); } */ Atom type; int format; unsigned long length, after; unsigned char *data; XGetWindowProperty (display, RootWindow (display, screen), XInternAtom (display, "_XROOTPMAP_ID", False), 0L, 1L, False, XA_PIXMAP, &type, &format, &length, &after, &data); XSetWindowBackgroundPixmap(display, window.window, * (Pixmap *) data); } else if (colour_set != background_colour) { XSetWindowBackground(display, win, background_colour); colour_set = background_colour; } XClearWindow(display, win); }