| 
																	
																	
																		
																			
																		
																	
																	
																 | 
																@ -117,6 +117,7 @@ void cleanup(void); | 
															
														
														
													
														
															
																 | 
																 | 
																void configure(Client *c); | 
																 | 
																 | 
																void configure(Client *c); | 
															
														
														
													
														
															
																 | 
																 | 
																void configurenotify(XEvent *e); | 
																 | 
																 | 
																void configurenotify(XEvent *e); | 
															
														
														
													
														
															
																 | 
																 | 
																void configurerequest(XEvent *e); | 
																 | 
																 | 
																void configurerequest(XEvent *e); | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																unsigned int counttiled(void); | 
															
														
														
													
														
															
																 | 
																 | 
																void destroynotify(XEvent *e); | 
																 | 
																 | 
																void destroynotify(XEvent *e); | 
															
														
														
													
														
															
																 | 
																 | 
																void detach(Client *c); | 
																 | 
																 | 
																void detach(Client *c); | 
															
														
														
													
														
															
																 | 
																 | 
																void detachstack(Client *c); | 
																 | 
																 | 
																void detachstack(Client *c); | 
															
														
														
													
												
													
														
															
																| 
																	
																		
																			
																		
																	
																	
																		
																			
																		
																	
																	
																 | 
																@ -170,7 +171,8 @@ unsigned int textnw(const char *text, unsigned int len); | 
															
														
														
													
														
															
																 | 
																 | 
																unsigned int textw(const char *text); | 
																 | 
																 | 
																unsigned int textw(const char *text); | 
															
														
														
													
														
															
																 | 
																 | 
																void tileh(void); | 
																 | 
																 | 
																void tileh(void); | 
															
														
														
													
														
															
																 | 
																 | 
																void tilehstack(unsigned int n); | 
																 | 
																 | 
																void tilehstack(unsigned int n); | 
															
														
														
													
														
															
																 | 
																 | 
																unsigned int tilemaster(void); | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																Client *tilemaster(unsigned int n); | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																void tileresize(Client *c, int x, int y, int w, int h); | 
															
														
														
													
														
															
																 | 
																 | 
																void tilev(void); | 
																 | 
																 | 
																void tilev(void); | 
															
														
														
													
														
															
																 | 
																 | 
																void tilevstack(unsigned int n); | 
																 | 
																 | 
																void tilevstack(unsigned int n); | 
															
														
														
													
														
															
																 | 
																 | 
																void togglefloating(const char *arg); | 
																 | 
																 | 
																void togglefloating(const char *arg); | 
															
														
														
													
												
													
														
															
																| 
																	
																		
																			
																		
																	
																	
																		
																			
																		
																	
																	
																 | 
																@ -458,6 +460,15 @@ configurerequest(XEvent *e) { | 
															
														
														
													
														
															
																 | 
																 | 
																	XSync(dpy, False); | 
																 | 
																 | 
																	XSync(dpy, False); | 
															
														
														
													
														
															
																 | 
																 | 
																} | 
																 | 
																 | 
																} | 
															
														
														
													
														
															
																 | 
																 | 
																
 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																unsigned int | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																counttiled(void) { | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																	unsigned int n; | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																	Client *c; | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																	for(n = 0, c = nexttiled(clients); c; c = nexttiled(c->next), n++); | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																	return n; | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																} | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																void | 
																 | 
																 | 
																void | 
															
														
														
													
														
															
																 | 
																 | 
																destroynotify(XEvent *e) { | 
																 | 
																 | 
																destroynotify(XEvent *e) { | 
															
														
														
													
														
															
																 | 
																 | 
																	Client *c; | 
																 | 
																 | 
																	Client *c; | 
															
														
														
													
												
													
														
															
																| 
																	
																		
																			
																		
																	
																	
																		
																			
																		
																	
																	
																 | 
																@ -1578,90 +1589,77 @@ textw(const char *text) { | 
															
														
														
													
														
															
																 | 
																 | 
																	return textnw(text, strlen(text)) + dc.font.height; | 
																 | 
																 | 
																	return textnw(text, strlen(text)) + dc.font.height; | 
															
														
														
													
														
															
																 | 
																 | 
																} | 
																 | 
																 | 
																} | 
															
														
														
													
														
															
																 | 
																 | 
																
 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																void | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																tileresize(Client *c, int x, int y, int w, int h) { | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																	resize(c, x, y, w, h, RESIZEHINTS); | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																	if((RESIZEHINTS) && ((c->h < bh) || (c->h > h) || (c->w < bh) || (c->w > w))) | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																		/* client doesn't accept size constraints */ | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																		resize(c, x, y, w, h, False); | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																} | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																
 | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																void | 
																 | 
																 | 
																void | 
															
														
														
													
														
															
																 | 
																 | 
																tileh(void) { | 
																 | 
																 | 
																tileh(void) { | 
															
														
														
													
														
															
																 | 
																 | 
																	tilehstack(tilemaster()); | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																} | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																
 | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																void | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																tilehstack(unsigned int n) { | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																	int i, x, w; | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																	int x, w; | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																	unsigned int i, n = counttiled(); | 
															
														
														
													
														
															
																 | 
																 | 
																	Client *c; | 
																 | 
																 | 
																	Client *c; | 
															
														
														
													
														
															
																 | 
																 | 
																
 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																	if(n == 0) | 
																 | 
																 | 
																	if(n == 0) | 
															
														
														
													
														
															
																 | 
																 | 
																		return; | 
																 | 
																 | 
																		return; | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																	c = tilemaster(n); | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																	if(--n == 0) | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																		return; | 
															
														
														
													
														
															
																 | 
																 | 
																
 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																	x = tx; | 
																 | 
																 | 
																	x = tx; | 
															
														
														
													
														
															
																 | 
																 | 
																	w = tw / n; | 
																 | 
																 | 
																	w = tw / n; | 
															
														
														
													
														
															
																 | 
																 | 
																	if(w < bh) | 
																 | 
																 | 
																	if(w < bh) | 
															
														
														
													
														
															
																 | 
																 | 
																		w = tw; | 
																 | 
																 | 
																		w = tw; | 
															
														
														
													
														
															
																 | 
																 | 
																
 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																	for(i = 0, c = nexttiled(clients); c; c = nexttiled(c->next), i++) | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																		if(i > 0) { | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																			if(i > 1 && i == n) /* remainder */ | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																				tileresize(c, x, ty, (tx + tw) - x - 2 * c->border, | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																				              th - 2 * c->border); | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																			else | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																				tileresize(c, x, ty, w - 2 * c->border, | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																				              th - 2 * c->border); | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																			if(w != tw) | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																				x = c->x + c->w + 2 * c->border; | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																		} | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																	for(i = 0, c = nexttiled(c->next); c; c = nexttiled(c->next), i++) { | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																		if(i + 1 == n) /* remainder */ | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																			tileresize(c, x, ty, (tx + tw) - x - 2 * c->border, th - 2 * c->border); | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																		else | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																			tileresize(c, x, ty, w - 2 * c->border, th - 2 * c->border); | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																		if(w != tw) | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																			x = c->x + c->w + 2 * c->border; | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																	} | 
															
														
														
													
														
															
																 | 
																 | 
																} | 
																 | 
																 | 
																} | 
															
														
														
													
														
															
																 | 
																 | 
																
 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																unsigned int | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																tilemaster(void) { | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																	unsigned int n; | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																	Client *c, *mc; | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																Client * | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																tilemaster(unsigned int n) { | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																	Client *c = nexttiled(clients); | 
															
														
														
													
														
															
																 | 
																 | 
																
 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																	for(n = 0, mc = c = nexttiled(clients); c; c = nexttiled(c->next)) | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																		n++; | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																	if(n == 0) | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																		return 0; | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																	if(n == 1) | 
																 | 
																 | 
																	if(n == 1) | 
															
														
														
													
														
															
																 | 
																 | 
																		tileresize(mc, mox, moy, mow - 2 * mc->border, moh - 2 * mc->border); | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																		tileresize(c, mox, moy, mow - 2 * c->border, moh - 2 * c->border); | 
															
														
														
													
														
															
																 | 
																 | 
																	else | 
																 | 
																 | 
																	else | 
															
														
														
													
														
															
																 | 
																 | 
																		tileresize(mc, mx, my, mw - 2 * mc->border, mh - 2 * mc->border); | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																	return n - 1; | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																		tileresize(c, mx, my, mw - 2 * c->border, mh - 2 * c->border); | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																	return c; | 
															
														
														
													
														
															
																 | 
																 | 
																} | 
																 | 
																 | 
																} | 
															
														
														
													
														
															
																 | 
																 | 
																
 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																void | 
																 | 
																 | 
																void | 
															
														
														
													
														
															
																 | 
																 | 
																tilev(void) { | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																	tilevstack(tilemaster()); | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																tileresize(Client *c, int x, int y, int w, int h) { | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																	resize(c, x, y, w, h, RESIZEHINTS); | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																	if((RESIZEHINTS) && ((c->h < bh) || (c->h > h) || (c->w < bh) || (c->w > w))) | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																		/* client doesn't accept size constraints */ | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																		resize(c, x, y, w, h, False); | 
															
														
														
													
														
															
																 | 
																 | 
																} | 
																 | 
																 | 
																} | 
															
														
														
													
														
															
																 | 
																 | 
																
 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																void | 
																 | 
																 | 
																void | 
															
														
														
													
														
															
																 | 
																 | 
																tilevstack(unsigned int n) { | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																	int i, y, h; | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																tilev(void) { | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																	int y, h; | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																	unsigned int i, n = counttiled(); | 
															
														
														
													
														
															
																 | 
																 | 
																	Client *c; | 
																 | 
																 | 
																	Client *c; | 
															
														
														
													
														
															
																 | 
																 | 
																
 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																	if(n == 0) | 
																 | 
																 | 
																	if(n == 0) | 
															
														
														
													
														
															
																 | 
																 | 
																		return; | 
																 | 
																 | 
																		return; | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																	c = tilemaster(n); | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																	if(--n == 0) | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																		return; | 
															
														
														
													
														
															
																 | 
																 | 
																
 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																	y = ty; | 
																 | 
																 | 
																	y = ty; | 
															
														
														
													
														
															
																 | 
																 | 
																	h = th / n; | 
																 | 
																 | 
																	h = th / n; | 
															
														
														
													
														
															
																 | 
																 | 
																	if(h < bh) | 
																 | 
																 | 
																	if(h < bh) | 
															
														
														
													
														
															
																 | 
																 | 
																		h = th; | 
																 | 
																 | 
																		h = th; | 
															
														
														
													
														
															
																 | 
																 | 
																
 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																	for(i = 0, c = nexttiled(clients); c; c = nexttiled(c->next), i++) | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																		if(i > 0) { | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																			if(i > 1 && i == n) /* remainder */ | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																				tileresize(c, tx, y, tw - 2 * c->border, | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																				              (ty + th) - y - 2 * c->border); | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																			else | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																				tileresize(c, tx, y, tw - 2 * c->border, | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																				              h - 2 * c->border); | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																			if(h != th) | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																				y = c->y + c->h + 2 * c->border; | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																		} | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																	for(i = 0, c = nexttiled(c->next); c; c = nexttiled(c->next), i++) { | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																		if(i + 1 == n) /* remainder */ | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																			tileresize(c, tx, y, tw - 2 * c->border, (ty + th) - y - 2 * c->border); | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																		else | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																			tileresize(c, tx, y, tw - 2 * c->border, h - 2 * c->border); | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																		if(h != th) | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																			y = c->y + c->h + 2 * c->border; | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																	} | 
															
														
														
													
														
															
																 | 
																 | 
																} | 
																 | 
																 | 
																} | 
															
														
														
													
														
															
																 | 
																 | 
																
 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																void | 
																 | 
																 | 
																void | 
															
														
														
													
												
													
														
															
																| 
																	
																		
																			
																		
																	
																	
																	
																 | 
																
  |