timplemented NET_ACTIVE_WINDOW support - dwm - [fork] customized build of dwm, … | |
git clone git://src.adamsgaard.dk/dwm | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit 92e55c7c53cb808b584982ac8f6d69112d713fab | |
parent c86f131681182258208ef97e81206ccc44e718ee | |
Author: Anselm R.Garbe <[email protected]> | |
Date: Tue, 8 Aug 2006 17:08:45 +0200 | |
implemented NET_ACTIVE_WINDOW support | |
Diffstat: | |
M client.c | 5 +++++ | |
M dwm.h | 2 +- | |
M event.c | 13 +++++++++++++ | |
M main.c | 1 + | |
4 files changed, 20 insertions(+), 1 deletion(-) | |
--- | |
diff --git a/client.c b/client.c | |
t@@ -58,6 +58,8 @@ focus(Client *c) | |
drawtitle(c); | |
XSetInputFocus(dpy, c->win, RevertToPointerRoot, CurrentTime); | |
XSync(dpy, False); | |
+ XChangeProperty(dpy, root, netatom[NetActiveWindow], XA_WINDOW, 32, | |
+ PropModeReplace, (unsigned char *)&c->win, 1); | |
while(XCheckMaskEvent(dpy, EnterWindowMask, &ev)); | |
} | |
t@@ -459,6 +461,9 @@ unmanage(Client *c) | |
arrange(NULL); | |
if(sel) | |
focus(sel); | |
+ else | |
+ XChangeProperty(dpy, root, netatom[NetActiveWindow], XA_WINDOW… | |
+ PropModeReplace, (unsigned char *)NULL, 1); | |
} | |
void | |
diff --git a/dwm.h b/dwm.h | |
t@@ -22,7 +22,7 @@ union Arg { | |
}; | |
/* atoms */ | |
-enum { NetSupported, NetWMName, NetLast }; | |
+enum { NetSupported, NetWMName, NetActiveWindow, NetLast }; | |
enum { WMProtocols, WMDelete, WMLast }; | |
/* cursor */ | |
diff --git a/event.c b/event.c | |
t@@ -146,6 +146,18 @@ buttonpress(XEvent *e) | |
} | |
static void | |
+clientmessage(XEvent *e) | |
+{ | |
+ Client *c; | |
+ XClientMessageEvent *ev = &e->xclient; | |
+ | |
+ if(ev->message_type == netatom[NetActiveWindow]) { | |
+ if((c = getclient(ev->window)) && c->tags[tsel]) | |
+ focus(c); | |
+ } | |
+} | |
+ | |
+static void | |
configurerequest(XEvent *e) | |
{ | |
Client *c; | |
t@@ -339,6 +351,7 @@ unmapnotify(XEvent *e) | |
void (*handler[LASTEvent]) (XEvent *) = { | |
[ButtonPress] = buttonpress, | |
+ [ClientMessage] = clientmessage, | |
[ConfigureRequest] = configurerequest, | |
[DestroyNotify] = destroynotify, | |
[EnterNotify] = enternotify, | |
diff --git a/main.c b/main.c | |
t@@ -201,6 +201,7 @@ main(int argc, char *argv[]) | |
wmatom[WMDelete] = XInternAtom(dpy, "WM_DELETE_WINDOW", False); | |
netatom[NetSupported] = XInternAtom(dpy, "_NET_SUPPORTED", False); | |
netatom[NetWMName] = XInternAtom(dpy, "_NET_WM_NAME", False); | |
+ netatom[NetActiveWindow] = XInternAtom(dpy, "_NET_ACTIVE_WINDOW", Fals… | |
XChangeProperty(dpy, root, netatom[NetSupported], XA_ATOM, 32, | |
PropModeReplace, (unsigned char *) netatom, NetLast); | |