tapplied Andreas Amanns' netwm_client_list patch, but with some indentation fix… | |
git clone git://src.adamsgaard.dk/dwm | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit 3bfc43c3d01d710c4828d75a8a5a9b910ee90dff | |
parent c1128417a991258b2382a76ec4529b213ee15c91 | |
Author: [email protected] <unknown> | |
Date: Sun, 25 Mar 2012 17:49:35 +0200 | |
applied Andreas Amanns' netwm_client_list patch, but with some indentation fixes | |
Diffstat: | |
M dwm.c | 21 ++++++++++++++++++++- | |
1 file changed, 20 insertions(+), 1 deletion(-) | |
--- | |
diff --git a/dwm.c b/dwm.c | |
t@@ -60,7 +60,7 @@ enum { CurNormal, CurResize, CurMove, CurLast }; /* c… | |
enum { ColBorder, ColFG, ColBG, ColLast }; /* color */ | |
enum { NetSupported, NetWMName, NetWMState, | |
NetWMFullscreen, NetActiveWindow, NetWMWindowType, | |
- NetWMWindowTypeDialog, NetLast }; /* EWMH atoms */ | |
+ NetWMWindowTypeDialog, NetClientList, NetLast }; /* EWMH atoms */ | |
enum { WMProtocols, WMDelete, WMState, WMTakeFocus, WMLast }; /* default atoms… | |
enum { ClkTagBar, ClkLtSymbol, ClkStatusText, ClkWinTitle, | |
ClkClientWin, ClkRootWin, ClkLast }; /* clicks */ | |
t@@ -238,6 +238,7 @@ static void unmapnotify(XEvent *e); | |
static Bool updategeom(void); | |
static void updatebarpos(Monitor *m); | |
static void updatebars(void); | |
+static void updateclientlist(void); | |
static void updatenumlockmask(void); | |
static void updatesizehints(Client *c); | |
static void updatestatus(void); | |
t@@ -1160,6 +1161,8 @@ manage(Window w, XWindowAttributes *wa) { | |
XRaiseWindow(dpy, c->win); | |
attach(c); | |
attachstack(c); | |
+ XChangeProperty(dpy, root, netatom[NetClientList], XA_WINDOW, 32, Prop… | |
+ (unsigned char *) &(c->win), 1); | |
XMoveResizeWindow(dpy, c->win, c->x + 2 * sw, c->y, c->w, c->h); /* so… | |
setclientstate(c, NormalState); | |
if (c->mon == selmon) | |
t@@ -1621,6 +1624,7 @@ setup(void) { | |
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… | |
+ netatom[NetClientList] = XInternAtom(dpy, "_NET_CLIENT_LIST", False); | |
/* init cursors */ | |
cursor[CurNormal] = XCreateFontCursor(dpy, XC_left_ptr); | |
cursor[CurResize] = XCreateFontCursor(dpy, XC_sizing); | |
t@@ -1643,6 +1647,7 @@ setup(void) { | |
/* EWMH support per view */ | |
XChangeProperty(dpy, root, netatom[NetSupported], XA_ATOM, 32, | |
PropModeReplace, (unsigned char *) netatom, NetLast); | |
+ XDeleteProperty(dpy, root, netatom[NetClientList]); | |
/* select for events */ | |
wa.cursor = cursor[CurNormal]; | |
wa.event_mask = SubstructureRedirectMask|SubstructureNotifyMask|Button… | |
t@@ -1820,6 +1825,7 @@ unmanage(Client *c, Bool destroyed) { | |
} | |
free(c); | |
focus(NULL); | |
+ updateclientlist(); | |
arrange(m); | |
} | |
t@@ -1868,6 +1874,19 @@ updatebarpos(Monitor *m) { | |
m->by = -bh; | |
} | |
+void | |
+updateclientlist() { | |
+ Client *c; | |
+ Monitor *m; | |
+ | |
+ XDeleteProperty(dpy, root, netatom[NetClientList]); | |
+ for(m = mons; m; m = m->next) | |
+ for(c = m->clients; c; c = c->next) | |
+ XChangeProperty(dpy, root, netatom[NetClientList], | |
+ XA_WINDOW, 32, PropModeAppend, | |
+ (unsigned char *) &(c->win), 1); | |
+} | |
+ | |
Bool | |
updategeom(void) { | |
Bool dirty = False; |