| 
																	
																	
																		
																			
																		
																	
																	
																 | 
																@ -159,9 +159,7 @@ static Bool gettextprop(Window w, Atom atom, char *text, unsigned int size); | 
															
														
														
													
														
															
																 | 
																 | 
																static void grabbuttons(Client *c, Bool focused); | 
																 | 
																 | 
																static void grabbuttons(Client *c, Bool focused); | 
															
														
														
													
														
															
																 | 
																 | 
																static void grabkeys(void); | 
																 | 
																 | 
																static void grabkeys(void); | 
															
														
														
													
														
															
																 | 
																 | 
																static void initfont(const char *fontstr); | 
																 | 
																 | 
																static void initfont(const char *fontstr); | 
															
														
														
													
														
															
																 | 
																 | 
																static Bool isoccupied(unsigned int t); | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																static Bool isprotodel(Client *c); | 
																 | 
																 | 
																static Bool isprotodel(Client *c); | 
															
														
														
													
														
															
																 | 
																 | 
																static Bool isurgent(unsigned int t); | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																static void keypress(XEvent *e); | 
																 | 
																 | 
																static void keypress(XEvent *e); | 
															
														
														
													
														
															
																 | 
																 | 
																static void killclient(const Arg *arg); | 
																 | 
																 | 
																static void killclient(const Arg *arg); | 
															
														
														
													
														
															
																 | 
																 | 
																static void manage(Window w, XWindowAttributes *wa); | 
																 | 
																 | 
																static void manage(Window w, XWindowAttributes *wa); | 
															
														
														
													
												
													
														
															
																| 
																	
																		
																			
																		
																	
																	
																		
																			
																		
																	
																	
																 | 
																@ -500,19 +498,23 @@ die(const char *errstr, ...) { | 
															
														
														
													
														
															
																 | 
																 | 
																
 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																void | 
																 | 
																 | 
																void | 
															
														
														
													
														
															
																 | 
																 | 
																drawbar(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; | 
																 | 
																 | 
																	dc.x = 0; | 
															
														
														
													
														
															
																 | 
																 | 
																	for(i = 0; i < LENGTH(tags); i++) { | 
																 | 
																 | 
																	for(i = 0; i < LENGTH(tags); i++) { | 
															
														
														
													
														
															
																 | 
																 | 
																		dc.w = TEXTW(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), isurgent(i), dc.sel); | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																		} | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																		else { | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																			drawtext(tags[i], dc.norm, isurgent(i)); | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																			drawsquare(sel && sel->tags & 1 << i, isoccupied(i), isurgent(i), dc.norm); | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																		} | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																		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 << i, col); | 
															
														
														
													
														
															
																 | 
																 | 
																		dc.x += dc.w; | 
																 | 
																 | 
																		dc.x += dc.w; | 
															
														
														
													
														
															
																 | 
																 | 
																	} | 
																 | 
																 | 
																	} | 
															
														
														
													
														
															
																 | 
																 | 
																	if(blw > 0) { | 
																 | 
																 | 
																	if(blw > 0) { | 
															
														
														
													
												
													
														
															
																| 
																	
																		
																			
																		
																	
																	
																		
																			
																		
																	
																	
																 | 
																@ -741,7 +743,7 @@ grabbuttons(Client *c, Bool focused) { | 
															
														
														
													
														
															
																 | 
																 | 
																			if(buttons[i].click == ClkClientWin) | 
																 | 
																 | 
																			if(buttons[i].click == ClkClientWin) | 
															
														
														
													
														
															
																 | 
																 | 
																				for(j = 0; j < LENGTH(modifiers); j++) | 
																 | 
																 | 
																				for(j = 0; j < LENGTH(modifiers); j++) | 
															
														
														
													
														
															
																 | 
																 | 
																					XGrabButton(dpy, buttons[i].button, buttons[i].mask | modifiers[j], c->win, False, BUTTONMASK, GrabModeAsync, GrabModeSync, None, None); | 
																 | 
																 | 
																					XGrabButton(dpy, buttons[i].button, buttons[i].mask | modifiers[j], c->win, False, BUTTONMASK, GrabModeAsync, GrabModeSync, None, None); | 
															
														
														
													
														
															
																 | 
																 | 
																        } else | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																	} else | 
															
														
														
													
														
															
																 | 
																 | 
																		XGrabButton(dpy, AnyButton, AnyModifier, c->win, False, | 
																 | 
																 | 
																		XGrabButton(dpy, AnyButton, AnyModifier, c->win, False, | 
															
														
														
													
														
															
																 | 
																 | 
																		            BUTTONMASK, GrabModeAsync, GrabModeSync, None, None); | 
																 | 
																 | 
																		            BUTTONMASK, GrabModeAsync, GrabModeSync, None, None); | 
															
														
														
													
														
															
																 | 
																 | 
																} | 
																 | 
																 | 
																} | 
															
														
														
													
												
													
														
															
																| 
																	
																	
																	
																		
																			
																		
																	
																 | 
																@ -749,6 +751,7 @@ grabbuttons(Client *c, Bool focused) { | 
															
														
														
													
														
															
																 | 
																 | 
																void | 
																 | 
																 | 
																void | 
															
														
														
													
														
															
																 | 
																 | 
																grabkeys(void) { | 
																 | 
																 | 
																grabkeys(void) { | 
															
														
														
													
														
															
																 | 
																 | 
																	unsigned int i, j; | 
																 | 
																 | 
																	unsigned int i, j; | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																	unsigned int modifiers[] = { 0, LockMask, numlockmask, numlockmask|LockMask }; | 
															
														
														
													
														
															
																 | 
																 | 
																	KeyCode code; | 
																 | 
																 | 
																	KeyCode code; | 
															
														
														
													
														
															
																 | 
																 | 
																	XModifierKeymap *modmap; | 
																 | 
																 | 
																	XModifierKeymap *modmap; | 
															
														
														
													
														
															
																 | 
																 | 
																
 | 
																 | 
																 | 
																
 | 
															
														
														
													
												
													
														
															
																| 
																	
																	
																	
																		
																			
																		
																	
																 | 
																@ -764,14 +767,9 @@ grabkeys(void) { | 
															
														
														
													
														
															
																 | 
																 | 
																	XUngrabKey(dpy, AnyKey, AnyModifier, root); | 
																 | 
																 | 
																	XUngrabKey(dpy, AnyKey, AnyModifier, root); | 
															
														
														
													
														
															
																 | 
																 | 
																	for(i = 0; i < LENGTH(keys); i++) { | 
																 | 
																 | 
																	for(i = 0; i < LENGTH(keys); i++) { | 
															
														
														
													
														
															
																 | 
																 | 
																		code = XKeysymToKeycode(dpy, keys[i].keysym); | 
																 | 
																 | 
																		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, True, | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																				GrabModeAsync, GrabModeAsync); | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																		for(j = 0; j < LENGTH(modifiers); j++) | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																			XGrabKey(dpy, code, keys[i].mod | modifiers[j], root, True, | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																			         GrabModeAsync, GrabModeAsync); | 
															
														
														
													
														
															
																 | 
																 | 
																	} | 
																 | 
																 | 
																	} | 
															
														
														
													
														
															
																 | 
																 | 
																} | 
																 | 
																 | 
																} | 
															
														
														
													
														
															
																 | 
																 | 
																
 | 
																 | 
																 | 
																
 | 
															
														
														
													
												
													
														
															
																| 
																	
																		
																			
																		
																	
																	
																		
																			
																		
																	
																	
																 | 
																@ -815,16 +813,6 @@ initfont(const char *fontstr) { | 
															
														
														
													
														
															
																 | 
																 | 
																	dc.font.height = dc.font.ascent + dc.font.descent; | 
																 | 
																 | 
																	dc.font.height = dc.font.ascent + dc.font.descent; | 
															
														
														
													
														
															
																 | 
																 | 
																} | 
																 | 
																 | 
																} | 
															
														
														
													
														
															
																 | 
																 | 
																
 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																Bool | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																isoccupied(unsigned int t) { | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																	Client *c; | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																
 | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																	for(c = clients; c; c = c->next) | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																		if(c->tags & 1 << t) | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																			return True; | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																	return False; | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																} | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																
 | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																Bool | 
																 | 
																 | 
																Bool | 
															
														
														
													
														
															
																 | 
																 | 
																isprotodel(Client *c) { | 
																 | 
																 | 
																isprotodel(Client *c) { | 
															
														
														
													
														
															
																 | 
																 | 
																	int i, n; | 
																 | 
																 | 
																	int i, n; | 
															
														
														
													
												
													
														
															
																| 
																	
																	
																	
																		
																			
																		
																	
																 | 
																@ -840,16 +828,6 @@ isprotodel(Client *c) { | 
															
														
														
													
														
															
																 | 
																 | 
																	return ret; | 
																 | 
																 | 
																	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 | 
																 | 
																 | 
																void | 
															
														
														
													
														
															
																 | 
																 | 
																keypress(XEvent *e) { | 
																 | 
																 | 
																keypress(XEvent *e) { | 
															
														
														
													
														
															
																 | 
																 | 
																	unsigned int i; | 
																 | 
																 | 
																	unsigned int i; | 
															
														
														
													
												
													
														
															
																| 
																	
																		
																			
																		
																	
																	
																	
																 | 
																
  |