| 
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -57,14 +57,14 @@ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					#define TEXTW(X)                (drw_font_getexts_width(drw->font, X, strlen(X)) + drw->font->h) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					/* enums */ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					enum { CurNormal, CurResize, CurMove, CurLast };        /* cursor */ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					enum { ColBorder, ColFG, ColBG, ColLast };              /* color */ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					enum { CurNormal, CurResize, CurMove, CurLast }; /* cursor */ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					enum { SchemeNorm, SchemeSel, SchemeLast }; /* color schemes */ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					enum { NetSupported, NetWMName, NetWMState, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					       NetWMFullscreen, NetActiveWindow, NetWMWindowType, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					       NetWMWindowTypeDialog, NetClientList, 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 */ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					       ClkClientWin, ClkRootWin, ClkLast }; /* clicks */ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					typedef union { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						int i; | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -260,8 +260,7 @@ static void (*handler[LASTEvent]) (XEvent *) = { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					static Atom wmatom[WMLast], netatom[NetLast]; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					static Bool running = True; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					static Cur *cursor[CurLast]; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					static Theme thmnorm[ColLast]; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					static Theme thmsel[ColLast]; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					static ClrScheme scheme[SchemeLast]; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					static Display *dpy; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					static Drw *drw; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					static Fnt *fnt; | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -476,12 +475,12 @@ cleanup(void) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						drw_cur_free(drw, cursor[CurResize]); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						drw_cur_free(drw, cursor[CurMove]); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						drw_font_free(dpy, fnt); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						drw_clr_free(thmnorm->border); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						drw_clr_free(thmnorm->bg); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						drw_clr_free(thmnorm->fg); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						drw_clr_free(thmsel->border); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						drw_clr_free(thmsel->bg); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						drw_clr_free(thmsel->fg); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						drw_clr_free(scheme[SchemeNorm].border); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						drw_clr_free(scheme[SchemeNorm].bg); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						drw_clr_free(scheme[SchemeNorm].fg); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						drw_clr_free(scheme[SchemeSel].border); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						drw_clr_free(scheme[SchemeSel].bg); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						drw_clr_free(scheme[SchemeSel].fg); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						drw_free(drw); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						XSync(dpy, False); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						XSetInputFocus(dpy, PointerRoot, RevertToPointerRoot, CurrentTime); | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -705,14 +704,14 @@ drawbar(Monitor *m) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						x = 0; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						for(i = 0; i < LENGTH(tags); i++) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							w = TEXTW(tags[i]); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							drw_settheme(drw, m->tagset[m->seltags] & 1 << i ? thmsel : thmnorm); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							drw_setscheme(drw, m->tagset[m->seltags] & 1 << i ? &scheme[SchemeSel] : &scheme[SchemeNorm]); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							drw_text(drw, x, 0, w, bh, tags[i], urg & 1 << i); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							drw_rect(drw, x, 0, w, bh, m == selmon && selmon->sel && selmon->sel->tags & 1 << i, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							           occ & 1 << i, urg & 1 << i); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							x += w; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						w = blw = TEXTW(m->ltsymbol); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						drw_settheme(drw, thmnorm); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						drw_setscheme(drw, &scheme[SchemeNorm]); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						drw_text(drw, x, 0, w, bh, m->ltsymbol, 0); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						x += w; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						xx = x; | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -730,12 +729,12 @@ drawbar(Monitor *m) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						if((w = x - xx) > bh) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							x = xx; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							if(m->sel) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								drw_settheme(drw, m == selmon ? thmsel : thmnorm); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								drw_setscheme(drw, m == selmon ? &scheme[SchemeSel] : &scheme[SchemeNorm]); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								drw_text(drw, x, 0, w, bh, m->sel->name, 0); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								drw_rect(drw, x, 0, w, bh, m->sel->isfixed, m->sel->isfloating, 0); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							else { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								drw_settheme(drw, thmnorm); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								drw_setscheme(drw, &scheme[SchemeNorm]); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								drw_text(drw, x, 0, w, bh, NULL, 0); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						} | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -793,7 +792,7 @@ focus(Client *c) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							detachstack(c); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							attachstack(c); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							grabbuttons(c, True); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							XSetWindowBorder(dpy, c->win, thmsel->border->rgb); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							XSetWindowBorder(dpy, c->win, scheme[SchemeSel].border->rgb); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							setfocus(c); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						else { | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -1041,7 +1040,7 @@ manage(Window w, XWindowAttributes *wa) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						wc.border_width = c->bw; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						XConfigureWindow(dpy, w, CWBorderWidth, &wc); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						XSetWindowBorder(dpy, w, thmnorm->border->rgb); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						XSetWindowBorder(dpy, w, scheme[SchemeNorm].border->rgb); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						configure(c); /* propagates border_width, if size doesn't change */ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						updatewindowtype(c); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						updatesizehints(c); | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -1523,12 +1522,12 @@ setup(void) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						cursor[CurResize] = drw_cur_create(drw, XC_sizing); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						cursor[CurMove] = drw_cur_create(drw, XC_fleur); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						/* init appearance */ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						thmnorm->border = drw_clr_create(drw, normbordercolor); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						thmnorm->bg = drw_clr_create(drw, normbgcolor); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						thmnorm->fg = drw_clr_create(drw, normfgcolor); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						thmsel->border = drw_clr_create(drw, selbordercolor); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						thmsel->bg = drw_clr_create(drw, selbgcolor); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						thmsel->fg = drw_clr_create(drw, selfgcolor); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						scheme[SchemeNorm].border = drw_clr_create(drw, normbordercolor); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						scheme[SchemeNorm].bg = drw_clr_create(drw, normbgcolor); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						scheme[SchemeNorm].fg = drw_clr_create(drw, normfgcolor); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						scheme[SchemeSel].border = drw_clr_create(drw, selbordercolor); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						scheme[SchemeSel].bg = drw_clr_create(drw, selbgcolor); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						scheme[SchemeSel].fg = drw_clr_create(drw, selfgcolor); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						/* init bars */ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						updatebars(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						updatestatus(); | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -1674,7 +1673,7 @@ unfocus(Client *c, Bool setfocus) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						if(!c) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							return; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						grabbuttons(c, False); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						XSetWindowBorder(dpy, c->win, thmnorm->border->rgb); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						XSetWindowBorder(dpy, c->win, scheme[SchemeNorm].border->rgb); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						if(setfocus) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							XSetInputFocus(dpy, root, RevertToPointerRoot, CurrentTime); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							XDeleteProperty(dpy, root, netatom[NetActiveWindow]); | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
				
				 | 
				
					
  |