| 
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -10,7 +10,7 @@ typedef struct { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					} Layout; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					unsigned int blw = 0; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					static Layout *lt = NULL; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					static unsigned int sellayout = 0; /* default */ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					static void | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					floating(void) { /* default floating layout */ | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -36,7 +36,7 @@ arrange(void) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								unban(c); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							else | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								ban(c); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						lt->arrange(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						layouts[sellayout].arrange(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						focus(NULL); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						restack(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					} | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -76,25 +76,25 @@ focusprev(const char *arg) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					const char * | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					getsymbol(void) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					{ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						return lt->symbol; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						return layouts[sellayout].symbol; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					Bool | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					isfloating(void) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						return lt->arrange == floating; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						return layouts[sellayout].arrange == floating; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					Bool | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					isarrange(void (*func)()) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					{ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						return func == lt->arrange; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						return func == layouts[sellayout].arrange; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					void | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					initlayouts(void) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						unsigned int i, w; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						lt = &layouts[0]; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						/* TODO deserialize sellayout if present */ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						nlayouts = sizeof layouts / sizeof layouts[0]; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						for(blw = i = 0; i < nlayouts; i++) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							w = textw(layouts[i].symbol); | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -118,9 +118,9 @@ restack(void) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						drawstatus(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						if(!sel) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							return; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						if(sel->isfloating || lt->arrange == floating) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						if(sel->isfloating || isfloating()) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							XRaiseWindow(dpy, sel->win); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						if(lt->arrange != floating) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						if(!isfloating()) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							wc.stack_mode = Below; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							wc.sibling = barwin; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							if(!sel->isfloating) { | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -143,15 +143,14 @@ setlayout(const char *arg) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						int i; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						if(!arg) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							lt++; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							if(lt == layouts + nlayouts) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								lt = layouts; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							if(++sellayout == nlayouts) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								sellayout = 0;; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						else { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							i = atoi(arg); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							if(i < 0 || i >= nlayouts) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								return; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							lt = &layouts[i]; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							sellayout = i; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						if(sel) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							arrange(); | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -173,7 +172,7 @@ void | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					togglemax(const char *arg) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						XEvent ev; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						if(!sel || (lt->arrange != floating && !sel->isfloating) || sel->isfixed) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						if(!sel || (!isfloating() && !sel->isfloating) || sel->isfixed) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							return; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						if((sel->ismax = !sel->ismax)) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							sel->rx = sel->x; | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
				
				 | 
				
					
  |