applied Ivan Delalande's NET_SUPPORTING_WM_CHECK patch for gtk3 compatibility -… | |
git clone git://git.suckless.org/dwm | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit e63bf229485a576d68975dd4eb00c210394133ae | |
parent 5376947571040a4654384ea8889a54cc2313cca7 | |
Author: Anselm R Garbe <[email protected]> | |
Date: Mon, 5 Dec 2016 10:09:49 +0100 | |
applied Ivan Delalande's NET_SUPPORTING_WM_CHECK patch for gtk3 compatibility | |
Diffstat: | |
M dwm.c | 16 ++++++++++++++-- | |
1 file changed, 14 insertions(+), 2 deletions(-) | |
--- | |
diff --git a/dwm.c b/dwm.c | |
@@ -61,7 +61,7 @@ | |
/* enums */ | |
enum { CurNormal, CurResize, CurMove, CurLast }; /* cursor */ | |
enum { SchemeNorm, SchemeSel }; /* color schemes */ | |
-enum { NetSupported, NetWMName, NetWMState, | |
+enum { NetSupported, NetWMName, NetWMState, NetWMCheck, | |
NetWMFullscreen, NetActiveWindow, NetWMWindowType, | |
NetWMWindowTypeDialog, NetClientList, NetLast }; /* EWMH atoms */ | |
enum { WMProtocols, WMDelete, WMState, WMTakeFocus, WMLast }; /* default atoms… | |
@@ -267,7 +267,7 @@ static Scm *scheme; | |
static Display *dpy; | |
static Drw *drw; | |
static Monitor *mons, *selmon; | |
-static Window root; | |
+static Window root, wmcheckwin; | |
/* configuration, allows nested code to access above variables */ | |
#include "config.h" | |
@@ -485,6 +485,7 @@ cleanup(void) | |
drw_cur_free(drw, cursor[i]); | |
for (i = 0; i < LENGTH(colors); i++) | |
free(scheme[i]); | |
+ XDestroyWindow(dpy, wmcheckwin); | |
drw_free(drw); | |
XSync(dpy, False); | |
XSetInputFocus(dpy, PointerRoot, RevertToPointerRoot, CurrentTime); | |
@@ -1551,6 +1552,7 @@ setup(void) | |
{ | |
int i; | |
XSetWindowAttributes wa; | |
+ Atom utf8string; | |
/* clean up any zombies immediately */ | |
sigchld(0); | |
@@ -1567,6 +1569,7 @@ setup(void) | |
bh = drw->fonts->h + 2; | |
updategeom(); | |
/* init atoms */ | |
+ utf8string = XInternAtom(dpy, "UTF8_STRING", False); | |
wmatom[WMProtocols] = XInternAtom(dpy, "WM_PROTOCOLS", False); | |
wmatom[WMDelete] = XInternAtom(dpy, "WM_DELETE_WINDOW", False); | |
wmatom[WMState] = XInternAtom(dpy, "WM_STATE", False); | |
@@ -1575,6 +1578,7 @@ setup(void) | |
netatom[NetSupported] = XInternAtom(dpy, "_NET_SUPPORTED", False); | |
netatom[NetWMName] = XInternAtom(dpy, "_NET_WM_NAME", False); | |
netatom[NetWMState] = XInternAtom(dpy, "_NET_WM_STATE", False); | |
+ netatom[NetWMCheck] = XInternAtom(dpy, "_NET_SUPPORTING_WM_CHECK", Fal… | |
netatom[NetWMFullscreen] = XInternAtom(dpy, "_NET_WM_STATE_FULLSCREEN"… | |
netatom[NetWMWindowType] = XInternAtom(dpy, "_NET_WM_WINDOW_TYPE", Fal… | |
netatom[NetWMWindowTypeDialog] = XInternAtom(dpy, "_NET_WM_WINDOW_TYPE… | |
@@ -1590,6 +1594,14 @@ setup(void) | |
/* init bars */ | |
updatebars(); | |
updatestatus(); | |
+ /* supporting window for NetWMCheck */ | |
+ wmcheckwin = XCreateSimpleWindow(dpy, root, 0, 0, 1, 1, 0, 0, 0); | |
+ XChangeProperty(dpy, wmcheckwin, netatom[NetWMCheck], XA_WINDOW, 32, | |
+ PropModeReplace, (unsigned char *) &wmcheckwin, 1); | |
+ XChangeProperty(dpy, wmcheckwin, netatom[NetWMName], utf8string, 8, | |
+ PropModeReplace, (unsigned char *) "dwm", 4); | |
+ XChangeProperty(dpy, root, netatom[NetWMCheck], XA_WINDOW, 32, | |
+ PropModeReplace, (unsigned char *) &wmcheckwin, 1); | |
/* EWMH support per view */ | |
XChangeProperty(dpy, root, netatom[NetSupported], XA_ATOM, 32, | |
PropModeReplace, (unsigned char *) netatom, NetLast); |