summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorAnselm R Garbe2016-12-05 10:09:49 +0100
committerAnselm R Garbe2016-12-05 10:09:49 +0100
commitd5f5fe6a82595e41fbbf367731eea969d8ea7f3b (patch)
treeccce3cc01df7e2cf89193ba92bea4a8fa8bae304
parent2dcb7ae0b6e5b2779835fd60d9d79c9e106e8823 (diff)
downloadaur-d5f5fe6a82595e41fbbf367731eea969d8ea7f3b.tar.gz
applied Ivan Delalande's NET_SUPPORTING_WM_CHECK patch for gtk3 compatibility
-rw-r--r--dwm.c16
1 files changed, 14 insertions, 2 deletions
diff --git a/dwm.c b/dwm.c
index 3d6cc28ed22..ca6f67990d4 100644
--- 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", False);
netatom[NetWMFullscreen] = XInternAtom(dpy, "_NET_WM_STATE_FULLSCREEN", False);
netatom[NetWMWindowType] = XInternAtom(dpy, "_NET_WM_WINDOW_TYPE", False);
netatom[NetWMWindowTypeDialog] = XInternAtom(dpy, "_NET_WM_WINDOW_TYPE_DIALOG", False);
@@ -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);