hack that adds NET_SUPPORTING_WM_CHECK handling, dwm identifies itself as compiz, hence I believe this might workaround the JDK 1.6+ XToolkit bug 762b66ae
Anselm R. Garbe · 2007-11-15 18:57 1 file(s) · +15 −3
dwm.c +15 −3
53 53
enum { BarTop, BarBot, BarOff };			/* bar position */
54 54
enum { CurNormal, CurResize, CurMove, CurLast };	/* cursor */
55 55
enum { ColBorder, ColFG, ColBG, ColLast };		/* color */
56 -
enum { NetSupported, NetWMName, NetLast };		/* EWMH atoms */
56 +
enum { NetSupported, NetWMCheck, NetWMName, NetLast };	/* EWMH atoms */
57 57
enum { WMProtocols, WMDelete, WMName, WMState, WMLast };/* default atoms */
58 58
59 59
/* typedefs */
1427 1427
setup(void) {
1428 1428
	int d;
1429 1429
	unsigned int i, j, mask;
1430 +
	Atom utf8string;
1430 1431
	Window w;
1431 1432
	XModifierKeymap *modmap;
1432 1433
	XSetWindowAttributes wa;
1433 1434
1434 1435
	/* init atoms */
1436 +
	utf8string = XInternAtom(dpy, "UTF8_STRING", False);
1435 1437
	wmatom[WMProtocols] = XInternAtom(dpy, "WM_PROTOCOLS", False);
1436 1438
	wmatom[WMDelete] = XInternAtom(dpy, "WM_DELETE_WINDOW", False);
1437 1439
	wmatom[WMName] = XInternAtom(dpy, "WM_NAME", False);
1438 1440
	wmatom[WMState] = XInternAtom(dpy, "WM_STATE", False);
1439 1441
	netatom[NetSupported] = XInternAtom(dpy, "_NET_SUPPORTED", False);
1442 +
	netatom[NetWMCheck] = XInternAtom(dpy, "_NET_SUPPORTING_WM_CHECK", False);
1440 1443
	netatom[NetWMName] = XInternAtom(dpy, "_NET_WM_NAME", False);
1441 -
	XChangeProperty(dpy, root, netatom[NetSupported], XA_ATOM, 32,
1442 -
			PropModeReplace, (unsigned char *) netatom, NetLast);
1443 1444
1444 1445
	/* init cursors */
1445 1446
	cursor[CurNormal] = XCreateFontCursor(dpy, XC_left_ptr);
1514 1515
1515 1516
	/* multihead support */
1516 1517
	selscreen = XQueryPointer(dpy, root, &w, &w, &d, &d, &d, &d, &mask);
1518 +
1519 +
	/* EWMH properties */
1520 +
	XChangeProperty(dpy, barwin, netatom[NetWMCheck], XA_WINDOW, 32,
1521 +
			PropModeReplace, (unsigned char *) &barwin, 1);
1522 +
	/* HACK: dwm identifies itself as compiz to workaround the XToolkit bug of Sun JDK */
1523 +
	XChangeProperty(dpy, barwin, netatom[NetWMName], utf8string, 8,
1524 +
			PropModeReplace, (unsigned char *) "compiz", 7);
1525 +
	XChangeProperty(dpy, root, netatom[NetWMCheck], XA_WINDOW, 32,
1526 +
			PropModeReplace, (unsigned char *) &barwin, 1);
1527 +
	XChangeProperty(dpy, root, netatom[NetSupported], XA_ATOM, 32,
1528 +
			PropModeReplace, (unsigned char *) netatom, NetLast);
1517 1529
}
1518 1530
1519 1531
void