[xmonad] More trouble with KDE apps

John Goerzen jgoerzen at complete.org
Tue Jun 9 15:54:58 EDT 2009

To follow up a bit more, I also saw over at
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,
    if (st && 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;
	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);
	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

More information about the xmonad mailing list