tapplied Johannes Hofmann's patch, please test - dwm - [fork] customized build … | |
git clone git://src.adamsgaard.dk/dwm | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit 63d719023161c807242c01a2fe81a1097ca37447 | |
parent b279cef670e4d0e744e50331fce7a1f4a4e73798 | |
Author: anselm@anselm1 <unknown> | |
Date: Mon, 4 Aug 2008 17:39:36 +0100 | |
applied Johannes Hofmann's patch, please test | |
Diffstat: | |
M dwm.c | 58 ++++++++++-------------------… | |
1 file changed, 18 insertions(+), 40 deletions(-) | |
--- | |
diff --git a/dwm.c b/dwm.c | |
t@@ -159,9 +159,7 @@ static Bool gettextprop(Window w, Atom atom, char *text, u… | |
static void grabbuttons(Client *c, Bool focused); | |
static void grabkeys(void); | |
static void initfont(const char *fontstr); | |
-static Bool isoccupied(unsigned int t); | |
static Bool isprotodel(Client *c); | |
-static Bool isurgent(unsigned int t); | |
static void keypress(XEvent *e); | |
static void killclient(const Arg *arg); | |
static void manage(Window w, XWindowAttributes *wa); | |
t@@ -500,19 +498,23 @@ die(const char *errstr, ...) { | |
void | |
drawbar(void) { | |
- int i, x; | |
+ int x; | |
+ unsigned int i, occ = 0, urg = 0; | |
+ unsigned long *col; | |
+ Client *c; | |
+ | |
+ for(c = clients; c; c = c->next) { | |
+ occ |= c->tags; | |
+ if(c->isurgent) | |
+ urg |= c->tags; | |
+ } | |
dc.x = 0; | |
for(i = 0; i < LENGTH(tags); i++) { | |
dc.w = TEXTW(tags[i]); | |
- if(tagset[seltags] & 1 << i) { | |
- drawtext(tags[i], dc.sel, isurgent(i)); | |
- drawsquare(sel && sel->tags & 1 << i, isoccupied(i), i… | |
- } | |
- else { | |
- drawtext(tags[i], dc.norm, isurgent(i)); | |
- drawsquare(sel && sel->tags & 1 << i, isoccupied(i), i… | |
- } | |
+ col = tagset[seltags] & 1 << i ? dc.sel : dc.norm; | |
+ drawtext(tags[i], col, urg & 1 << i); | |
+ drawsquare(sel && sel->tags & 1 << i, occ & 1 << i, urg & 1 <<… | |
dc.x += dc.w; | |
} | |
if(blw > 0) { | |
t@@ -741,7 +743,7 @@ grabbuttons(Client *c, Bool focused) { | |
if(buttons[i].click == ClkClientWin) | |
for(j = 0; j < LENGTH(modifiers); j++) | |
XGrabButton(dpy, buttons[i].button, bu… | |
- } else | |
+ } else | |
XGrabButton(dpy, AnyButton, AnyModifier, c->win, False, | |
BUTTONMASK, GrabModeAsync, GrabModeSync, None, Non… | |
} | |
t@@ -749,6 +751,7 @@ grabbuttons(Client *c, Bool focused) { | |
void | |
grabkeys(void) { | |
unsigned int i, j; | |
+ unsigned int modifiers[] = { 0, LockMask, numlockmask, numlockmask|Loc… | |
KeyCode code; | |
XModifierKeymap *modmap; | |
t@@ -764,14 +767,9 @@ grabkeys(void) { | |
XUngrabKey(dpy, AnyKey, AnyModifier, root); | |
for(i = 0; i < LENGTH(keys); i++) { | |
code = XKeysymToKeycode(dpy, keys[i].keysym); | |
- XGrabKey(dpy, code, keys[i].mod, root, True, | |
- GrabModeAsync, GrabModeAsync); | |
- XGrabKey(dpy, code, keys[i].mod|LockMask, root, True, | |
- GrabModeAsync, GrabModeAsync); | |
- XGrabKey(dpy, code, keys[i].mod|numlockmask, root, True, | |
- GrabModeAsync, GrabModeAsync); | |
- XGrabKey(dpy, code, keys[i].mod|numlockmask|LockMask, root, Tr… | |
- GrabModeAsync, GrabModeAsync); | |
+ for(j = 0; j < LENGTH(modifiers); j++) | |
+ XGrabKey(dpy, code, keys[i].mod | modifiers[j], root, … | |
+ GrabModeAsync, GrabModeAsync); | |
} | |
} | |
t@@ -816,16 +814,6 @@ initfont(const char *fontstr) { | |
} | |
Bool | |
-isoccupied(unsigned int t) { | |
- Client *c; | |
- | |
- for(c = clients; c; c = c->next) | |
- if(c->tags & 1 << t) | |
- return True; | |
- return False; | |
-} | |
- | |
-Bool | |
isprotodel(Client *c) { | |
int i, n; | |
Atom *protocols; | |
t@@ -840,16 +828,6 @@ isprotodel(Client *c) { | |
return ret; | |
} | |
-Bool | |
-isurgent(unsigned int t) { | |
- Client *c; | |
- | |
- for(c = clients; c; c = c->next) | |
- if(c->isurgent && c->tags & 1 << t) | |
- return True; | |
- return False; | |
-} | |
- | |
void | |
keypress(XEvent *e) { | |
unsigned int i; |