
To follow up a bit more, I also saw over at http://src.gnu-darwin.org/ports/x11-wm/ede/work/ede/eworkpanel/dock.cpp.html this code: // Helper for Dock::embed_window() // Kopied from kdelibs/kdeui/qxembed.cpp static int get_parent(Window winid, Window *out_parent) { Window root, *children=0; unsigned int nchildren; int st = XQueryTree(fl_display, winid, &root, out_parent, &children, &nchildren); if (st && children) XFree(children); return st; } void Dock::embed_window(Window id) { if (id==0) return; // Store window id in a linked list structure struct straydata *p=traydata; struct straydata *p1; while (p!=0) { // Sometimes the app will reuse the same id on next start? // if (p->id == id) // return; p1=p; p=p->next; } p = new straydata; if (traydata == 0) { traydata=p; } else { p1->next = p; } p->id = id; p->next = 0; Fl_Window *win = new Fl_Window(24, 24); win->end(); this->add_to_tray(win); win->show(); p->win = win; // printf("id: %ld -> %ld\n", id, fl_xid(win)); XReparentWindow(fl_display, id, fl_xid(win), 0, 0); // Hack to get KDE icons working... Window parent = 0; get_parent(id, &parent); // printf(" ++ parent: %ld\n", parent); XMapWindow(fl_display, id); //Need to know when child dies XSelectInput(fl_display, fl_xid(win), SubstructureNotifyMask); Again, I don't know how that would impact xmonad. -- John