@ -152,7 +152,8 @@ typedef struct {  
			
		
	
		
			
				
					/* function declarations */  
			
		
	
		
			
				
					static  void  applyrules ( Client  * c ) ;  
			
		
	
		
			
				
					static  Bool  applysizehints ( Client  * c ,  int  * x ,  int  * y ,  int  * w ,  int  * h ,  Bool  interact ) ;  
			
		
	
		
			
				
					static  void  arrange ( void ) ;  
			
		
	
		
			
				
					static  void  arrange ( Monitor  * m ) ;  
			
		
	
		
			
				
					static  void  arrangemon ( Monitor  * m ) ;  
			
		
	
		
			
				
					static  void  attach ( Client  * c ) ;  
			
		
	
		
			
				
					static  void  attachstack ( Client  * c ) ;  
			
		
	
		
			
				
					static  void  buttonpress ( XEvent  * e ) ;  
			
		
	
	
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
				
				@ -379,18 +380,24 @@ applysizehints(Client *c, int *x, int *y, int *w, int *h, Bool interact) {  
			
		
	
		
			
				
					}  
			
		
	
		
			
				
					
  
			
		
	
		
			
				
					void  
			
		
	
		
			
				
					arrange ( void )  {  
			
		
	
		
			
				
						Monitor  * m ;   
			
		
	
		
			
				
					
  
			
		
	
		
			
				
						for ( m  =  mons ;  m ;  m  =  m - > next )   
			
		
	
		
			
				
					arrange ( Monitor  * m )  {  
			
		
	
		
			
				
						if ( m )   
			
		
	
		
			
				
							showhide ( m - > stack ) ;   
			
		
	
		
			
				
						else  for ( m  =  mons ;  m ;  m  =  m - > next )   
			
		
	
		
			
				
							showhide ( m - > stack ) ;   
			
		
	
		
			
				
						focus ( NULL ) ;   
			
		
	
		
			
				
						for ( m  =  mons ;  m ;  m  =  m - > next )  {   
			
		
	
		
			
				
							strncpy ( m - > ltsymbol ,  m - > lt [ m - > sellt ] - > symbol ,  sizeof  m - > ltsymbol ) ;   
			
		
	
		
			
				
							if ( m - > lt [ m - > sellt ] - > arrange )   
			
		
	
		
			
				
								m - > lt [ m - > sellt ] - > arrange ( m ) ;   
			
		
	
		
			
				
							restack ( m ) ;   
			
		
	
		
			
				
						}   
			
		
	
		
			
				
						if ( m )   
			
		
	
		
			
				
							arrangemon ( m ) ;   
			
		
	
		
			
				
						else  for ( m  =  mons ;  m ;  m  =  m - > next )   
			
		
	
		
			
				
							arrangemon ( m ) ;   
			
		
	
		
			
				
					}  
			
		
	
		
			
				
					
  
			
		
	
		
			
				
					void  
			
		
	
		
			
				
					arrangemon ( Monitor  * m )  {  
			
		
	
		
			
				
						strncpy ( m - > ltsymbol ,  m - > lt [ m - > sellt ] - > symbol ,  sizeof  m - > ltsymbol ) ;   
			
		
	
		
			
				
						if ( m - > lt [ m - > sellt ] - > arrange )   
			
		
	
		
			
				
							m - > lt [ m - > sellt ] - > arrange ( m ) ;   
			
		
	
		
			
				
						restack ( m ) ;   
			
		
	
		
			
				
					}  
			
		
	
		
			
				
					
  
			
		
	
		
			
				
					void  
			
		
	
	
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
				
				@ -546,7 +553,7 @@ configurenotify(XEvent *e) {  
			
		
	
		
			
				
								updatebars ( ) ;   
			
		
	
		
			
				
								for ( m  =  mons ;  m ;  m  =  m - > next )   
			
		
	
		
			
				
									XMoveResizeWindow ( dpy ,  m - > barwin ,  m - > wx ,  m - > by ,  m - > ww ,  bh ) ;   
			
		
	
		
			
				
								arrange ( ) ;   
			
		
	
		
			
				
								arrange ( NULL ) ;   
			
		
	
		
			
				
							}   
			
		
	
		
			
				
						}   
			
		
	
		
			
				
					}  
			
		
	
	
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
				
				@ -1139,7 +1146,7 @@ manage(Window w, XWindowAttributes *wa) {  
			
		
	
		
			
				
						XMoveResizeWindow ( dpy ,  c - > win ,  c - > x  +  2  *  sw ,  c - > y ,  c - > w ,  c - > h ) ;  /* some windows require this */   
			
		
	
		
			
				
						XMapWindow ( dpy ,  c - > win ) ;   
			
		
	
		
			
				
						setclientstate ( c ,  NormalState ) ;   
			
		
	
		
			
				
						arrange ( ) ;   
			
		
	
		
			
				
						arrange ( c - > mon ) ;   
			
		
	
		
			
				
					}  
			
		
	
		
			
				
					
  
			
		
	
		
			
				
					void  
			
		
	
	
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
				
				@ -1265,7 +1272,7 @@ propertynotify(XEvent *e) {  
			
		
	
		
			
				
							case  XA_WM_TRANSIENT_FOR :   
			
		
	
		
			
				
								XGetTransientForHint ( dpy ,  c - > win ,  & trans ) ;   
			
		
	
		
			
				
								if ( ! c - > isfloating  & &  ( c - > isfloating  =  ( wintoclient ( trans )  ! =  NULL ) ) )   
			
		
	
		
			
				
									arrange ( ) ;   
			
		
	
		
			
				
									arrange ( c - > mon ) ;   
			
		
	
		
			
				
								break ;   
			
		
	
		
			
				
							case  XA_WM_NORMAL_HINTS :   
			
		
	
		
			
				
								updatesizehints ( c ) ;   
			
		
	
	
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
				
				@ -1360,7 +1367,7 @@ restack(Monitor *m) {  
			
		
	
		
			
				
						XEvent  ev ;   
			
		
	
		
			
				
						XWindowChanges  wc ;   
			
		
	
		
			
				
					
  
			
		
	
		
			
				
						drawbars  ( ) ;   
			
		
	
		
			
				
						drawbar ( m ) ;   
			
		
	
		
			
				
						if ( ! m - > sel )   
			
		
	
		
			
				
							return ;   
			
		
	
		
			
				
						if ( m - > sel - > isfloating  | |  ! m - > lt [ m - > sellt ] - > arrange )   
			
		
	
	
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
				
				@ -1427,7 +1434,7 @@ sendmon(Client *c, Monitor *m) {  
			
		
	
		
			
				
						attach ( c ) ;   
			
		
	
		
			
				
						attachstack ( c ) ;   
			
		
	
		
			
				
						focus ( NULL ) ;   
			
		
	
		
			
				
						arrange ( ) ;   
			
		
	
		
			
				
						arrange ( NULL ) ;   
			
		
	
		
			
				
					}  
			
		
	
		
			
				
					
  
			
		
	
		
			
				
					void  
			
		
	
	
		
			
				
					
						
						
						
							
								 
						
					 
				
				@ -1442,12 +1449,14 @@ void  
			
		
	
		
			
				
					setlayout ( const  Arg  * arg )  {  
			
		
	
		
			
				
						if ( ! arg  | |  ! arg - > v  | |  arg - > v  ! =  selmon - > lt [ selmon - > sellt ] )   
			
		
	
		
			
				
							selmon - > sellt  ^ =  1 ;   
			
		
	
		
			
				
						if ( arg  & &  arg - > v )   
			
		
	
		
			
				
						if ( arg  & &  arg - > v )  {    
			
		
	
		
			
				
							selmon - > lt [ selmon - > sellt ]  =  ( Layout  * ) arg - > v ;   
			
		
	
		
			
				
							strncpy ( selmon - > ltsymbol ,  selmon - > lt [ selmon - > sellt ] - > symbol ,  sizeof  selmon - > ltsymbol ) ;   
			
		
	
		
			
				
						}   
			
		
	
		
			
				
						if ( selmon - > sel )   
			
		
	
		
			
				
							arrange ( ) ;   
			
		
	
		
			
				
							arrange ( selmon ) ;   
			
		
	
		
			
				
						else   
			
		
	
		
			
				
							drawbars  ( ) ;   
			
		
	
		
			
				
							drawbar ( selmon ) ;   
			
		
	
		
			
				
					}  
			
		
	
		
			
				
					
  
			
		
	
		
			
				
					/* arg > 1.0 will set mfact absolutly */  
			
		
	
	
		
			
				
					
						
						
						
							
								 
						
					 
				
				@ -1461,7 +1470,7 @@ setmfact(const Arg *arg) {  
			
		
	
		
			
				
						if ( f  <  0.1  | |  f  >  0.9 )   
			
		
	
		
			
				
							return ;   
			
		
	
		
			
				
						selmon - > mfact  =  f ;   
			
		
	
		
			
				
						arrange ( ) ;   
			
		
	
		
			
				
						arrange ( selmon ) ;   
			
		
	
		
			
				
					}  
			
		
	
		
			
				
					
  
			
		
	
		
			
				
					void  
			
		
	
	
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
				
				@ -1558,7 +1567,7 @@ void  
			
		
	
		
			
				
					tag ( const  Arg  * arg )  {  
			
		
	
		
			
				
						if ( selmon - > sel  & &  arg - > ui  &  TAGMASK )  {   
			
		
	
		
			
				
							selmon - > sel - > tags  =  arg - > ui  &  TAGMASK ;   
			
		
	
		
			
				
							arrange ( ) ;   
			
		
	
		
			
				
							arrange ( selmon ) ;   
			
		
	
		
			
				
						}   
			
		
	
		
			
				
					}  
			
		
	
		
			
				
					
  
			
		
	
	
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
				
				@ -1615,7 +1624,7 @@ togglebar(const Arg *arg) {  
			
		
	
		
			
				
						selmon - > showbar  =  ! selmon - > showbar ;   
			
		
	
		
			
				
						updatebarpos ( selmon ) ;   
			
		
	
		
			
				
						XMoveResizeWindow ( dpy ,  selmon - > barwin ,  selmon - > wx ,  selmon - > by ,  selmon - > ww ,  bh ) ;   
			
		
	
		
			
				
						arrange ( ) ;   
			
		
	
		
			
				
						arrange ( selmon ) ;   
			
		
	
		
			
				
					}  
			
		
	
		
			
				
					
  
			
		
	
		
			
				
					void  
			
		
	
	
		
			
				
					
						
						
						
							
								 
						
					 
				
				@ -1626,7 +1635,7 @@ togglefloating(const Arg *arg) {  
			
		
	
		
			
				
						if ( selmon - > sel - > isfloating )   
			
		
	
		
			
				
							resize ( selmon - > sel ,  selmon - > sel - > x ,  selmon - > sel - > y ,   
			
		
	
		
			
				
							       selmon - > sel - > w ,  selmon - > sel - > h ,  False ) ;   
			
		
	
		
			
				
						arrange ( ) ;   
			
		
	
		
			
				
						arrange ( selmon ) ;   
			
		
	
		
			
				
					}  
			
		
	
		
			
				
					
  
			
		
	
		
			
				
					void  
			
		
	
	
		
			
				
					
						
						
						
							
								 
						
					 
				
				@ -1638,7 +1647,7 @@ toggletag(const Arg *arg) {  
			
		
	
		
			
				
						newtags  =  selmon - > sel - > tags  ^  ( arg - > ui  &  TAGMASK ) ;   
			
		
	
		
			
				
						if ( newtags )  {   
			
		
	
		
			
				
							selmon - > sel - > tags  =  newtags ;   
			
		
	
		
			
				
							arrange ( ) ;   
			
		
	
		
			
				
							arrange ( selmon ) ;   
			
		
	
		
			
				
						}   
			
		
	
		
			
				
					}  
			
		
	
		
			
				
					
  
			
		
	
	
		
			
				
					
						
						
						
							
								 
						
					 
				
				@ -1648,7 +1657,7 @@ toggleview(const Arg *arg) {  
			
		
	
		
			
				
					
  
			
		
	
		
			
				
						if ( newtagset )  {   
			
		
	
		
			
				
							selmon - > tagset [ selmon - > seltags ]  =  newtagset ;   
			
		
	
		
			
				
							arrange ( ) ;   
			
		
	
		
			
				
							arrange ( selmon ) ;   
			
		
	
		
			
				
						}   
			
		
	
		
			
				
					}  
			
		
	
		
			
				
					
  
			
		
	
	
		
			
				
					
						
						
						
							
								 
						
					 
				
				@ -1663,6 +1672,7 @@ unfocus(Client *c) {  
			
		
	
		
			
				
					
  
			
		
	
		
			
				
					void  
			
		
	
		
			
				
					unmanage ( Client  * c ,  Bool  destroyed )  {  
			
		
	
		
			
				
						Monitor  * m  =  c - > mon ;   
			
		
	
		
			
				
						XWindowChanges  wc ;   
			
		
	
		
			
				
					
  
			
		
	
		
			
				
						/* The server grab construct avoids race conditions. */   
			
		
	
	
		
			
				
					
						
						
						
							
								 
						
					 
				
				@ -1681,7 +1691,7 @@ unmanage(Client *c, Bool destroyed) {  
			
		
	
		
			
				
						}   
			
		
	
		
			
				
						free ( c ) ;   
			
		
	
		
			
				
						focus ( NULL ) ;   
			
		
	
		
			
				
						arrange ( ) ;   
			
		
	
		
			
				
						arrange ( m ) ;   
			
		
	
		
			
				
					}  
			
		
	
		
			
				
					
  
			
		
	
		
			
				
					void  
			
		
	
	
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
				
				@ -1908,7 +1918,7 @@ view(const Arg *arg) {  
			
		
	
		
			
				
						selmon - > seltags  ^ =  1 ;  /* toggle sel tagset */   
			
		
	
		
			
				
						if ( arg - > ui  &  TAGMASK )   
			
		
	
		
			
				
							selmon - > tagset [ selmon - > seltags ]  =  arg - > ui  &  TAGMASK ;   
			
		
	
		
			
				
						arrange ( ) ;   
			
		
	
		
			
				
						arrange ( selmon ) ;   
			
		
	
		
			
				
					}  
			
		
	
		
			
				
					
  
			
		
	
		
			
				
					Client  *  
			
		
	
	
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
				
				@ -1986,7 +1996,7 @@ zoom(const Arg *arg) {  
			
		
	
		
			
				
						detach ( c ) ;   
			
		
	
		
			
				
						attach ( c ) ;   
			
		
	
		
			
				
						focus ( c ) ;   
			
		
	
		
			
				
						arrange ( ) ;   
			
		
	
		
			
				
						arrange ( c - > mon ) ;   
			
		
	
		
			
				
					}  
			
		
	
		
			
				
					
  
			
		
	
		
			
				
					int