@ -58,6 +58,22 @@ enum { WMProtocols, WMDelete, WMName, WMState, WMLast };/* default atoms */  
															
														 
														
													
														
															
																 
																 
																/* typedefs */  
																 
																 
																/* typedefs */  
															
														 
														
													
														
															
																 
																 
																typedef  struct  Client  Client ;  
																 
																 
																typedef  struct  Client  Client ;  
															
														 
														
													
														
															
																 
																 
																
  
																 
																 
																
  
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																struct  Client  {  
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																	char  name [ 256 ] ;   
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																	int  x ,  y ,  w ,  h ;   
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																	int  rx ,  ry ,  rw ,  rh ;  /* revert geometry */   
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																	int  basew ,  baseh ,  incw ,  inch ,  maxw ,  maxh ,  minw ,  minh ;   
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																	int  minax ,  maxax ,  minay ,  maxay ;   
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																	long  flags ;   
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																	unsigned  int  border ,  oldborder ;   
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																	Bool  isbanned ,  isfixed ,  ismax ,  isfloating ,  wasfloating ;   
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																	Bool  * tags ;   
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																	Client  * next ;   
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																	Client  * prev ;   
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																	Client  * snext ;   
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																	Window  win ;   
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																} ;  
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																
  
															
														 
														
													
														
															
																 
																 
																typedef  struct  {  
																 
																 
																typedef  struct  {  
															
														 
														
													
														
															
																 
																 
																	int  x ,  y ,  w ,  h ;   
																 
																 
																	int  x ,  y ,  w ,  h ;   
															
														 
														
													
														
															
																 
																 
																	unsigned  long  norm [ ColLast ] ;   
																 
																 
																	unsigned  long  norm [ ColLast ] ;   
															
														 
														
													
												
													
														
															
																
																	
																		
																			 
																		 
																	
																	
																		
																			 
																		 
																	
																	
																 
																@ -170,6 +186,7 @@ void updatebarpos(void);  
															
														 
														
													
														
															
																 
																 
																void  updatesizehints ( Client  * c ) ;  
																 
																 
																void  updatesizehints ( Client  * c ) ;  
															
														 
														
													
														
															
																 
																 
																void  updatetitle ( Client  * c ) ;  
																 
																 
																void  updatetitle ( Client  * c ) ;  
															
														 
														
													
														
															
																 
																 
																void  view ( const  char  * arg ) ;  
																 
																 
																void  view ( const  char  * arg ) ;  
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																void  viewprevtag ( const  char  * arg ) ; 	/* views previous selected tags */  
															
														 
														
													
														
															
																 
																 
																int  xerror ( Display  * dpy ,  XErrorEvent  * ee ) ;  
																 
																 
																int  xerror ( Display  * dpy ,  XErrorEvent  * ee ) ;  
															
														 
														
													
														
															
																 
																 
																int  xerrordummy ( Display  * dsply ,  XErrorEvent  * ee ) ;  
																 
																 
																int  xerrordummy ( Display  * dsply ,  XErrorEvent  * ee ) ;  
															
														 
														
													
														
															
																 
																 
																int  xerrorstart ( Display  * dsply ,  XErrorEvent  * ee ) ;  
																 
																 
																int  xerrorstart ( Display  * dsply ,  XErrorEvent  * ee ) ;  
															
														 
														
													
												
													
														
															
																
																	
																		
																			 
																		 
																	
																	
																		
																			 
																		 
																	
																	
																 
																@ -219,22 +236,7 @@ Regs *regs = NULL;  
															
														 
														
													
														
															
																 
																 
																/* Statically define the number of tags. */  
																 
																 
																/* Statically define the number of tags. */  
															
														 
														
													
														
															
																 
																 
																unsigned  int  ntags  =  sizeof  tags  /  sizeof  tags [ 0 ] ;  
																 
																 
																unsigned  int  ntags  =  sizeof  tags  /  sizeof  tags [ 0 ] ;  
															
														 
														
													
														
															
																 
																 
																Bool  seltags [ sizeof  tags  /  sizeof  tags [ 0 ] ]  =  { [ 0 ]  =  True } ;  
																 
																 
																Bool  seltags [ sizeof  tags  /  sizeof  tags [ 0 ] ]  =  { [ 0 ]  =  True } ;  
															
														 
														
													
														
															
																 
																 
																
  
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																struct  Client  {  
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																	char  name [ 256 ] ;   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																	int  x ,  y ,  w ,  h ;   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																	int  rx ,  ry ,  rw ,  rh ;  /* revert geometry */   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																	int  basew ,  baseh ,  incw ,  inch ,  maxw ,  maxh ,  minw ,  minh ;   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																	int  minax ,  maxax ,  minay ,  maxay ;   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																	long  flags ;   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																	unsigned  int  border ,  oldborder ;   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																	Bool  isbanned ,  isfixed ,  ismax ,  isfloating ,  wasfloating ;   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																	Bool  tags [ sizeof  tags  /  sizeof  tags [ 0 ] ] ;   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																	Client  * next ;   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																	Client  * prev ;   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																	Client  * snext ;   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																	Window  win ;   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																} ;  
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																Bool  prevtags [ sizeof  tags  /  sizeof  tags [ 0 ] ]  =  { [ 0 ]  =  True } ;  
															
														 
														
													
														
															
																 
																 
																
  
																 
																 
																
  
															
														 
														
													
														
															
																 
																 
																/* functions*/  
																 
																 
																/* functions*/  
															
														 
														
													
														
															
																 
																 
																void  
																 
																 
																void  
															
														 
														
													
												
													
														
															
																
																	
																		
																			 
																		 
																	
																	
																		
																			 
																		 
																	
																	
																 
																@ -265,8 +267,7 @@ applyrules(Client *c) {  
															
														 
														
													
														
															
																 
																 
																	if ( ch . res_name )   
																 
																 
																	if ( ch . res_name )   
															
														 
														
													
														
															
																 
																 
																		XFree ( ch . res_name ) ;   
																 
																 
																		XFree ( ch . res_name ) ;   
															
														 
														
													
														
															
																 
																 
																	if ( ! matched )   
																 
																 
																	if ( ! matched )   
															
														 
														
													
														
															
																 
																 
																		for ( i  =  0 ;  i  <  ntags ;  i + + )   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																			c - > tags [ i ]  =  seltags [ i ] ;   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																		memcpy ( c - > tags ,  seltags ,  sizeof  seltags ) ;   
															
														 
														
													
														
															
																 
																 
																}  
																 
																 
																}  
															
														 
														
													
														
															
																 
																 
																
  
																 
																 
																
  
															
														 
														
													
														
															
																 
																 
																void  
																 
																 
																void  
															
														 
														
													
												
													
														
															
																
																	
																		
																			 
																		 
																	
																	
																		
																			 
																		 
																	
																	
																 
																@ -1002,13 +1003,13 @@ leavenotify(XEvent *e) {  
															
														 
														
													
														
															
																 
																 
																
  
																 
																 
																
  
															
														 
														
													
														
															
																 
																 
																void  
																 
																 
																void  
															
														 
														
													
														
															
																 
																 
																manage ( Window  w ,  XWindowAttributes  * wa )  {  
																 
																 
																manage ( Window  w ,  XWindowAttributes  * wa )  {  
															
														 
														
													
														
															
																 
																 
																	unsigned  int  i ;   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																	Client  * c ,  * t  =  NULL ;   
																 
																 
																	Client  * c ,  * t  =  NULL ;   
															
														 
														
													
														
															
																 
																 
																	Window  trans ;   
																 
																 
																	Window  trans ;   
															
														 
														
													
														
															
																 
																 
																	Status  rettrans ;   
																 
																 
																	Status  rettrans ;   
															
														 
														
													
														
															
																 
																 
																	XWindowChanges  wc ;   
																 
																 
																	XWindowChanges  wc ;   
															
														 
														
													
														
															
																 
																 
																
  
																 
																 
																
  
															
														 
														
													
														
															
																 
																 
																	c  =  emallocz ( sizeof ( Client ) ) ;   
																 
																 
																	c  =  emallocz ( sizeof ( Client ) ) ;   
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																	c - > tags  =  emallocz ( sizeof  seltags ) ;   
															
														 
														
													
														
															
																 
																 
																	c - > win  =  w ;   
																 
																 
																	c - > win  =  w ;   
															
														 
														
													
														
															
																 
																 
																	c - > x  =  wa - > x ;   
																 
																 
																	c - > x  =  wa - > x ;   
															
														 
														
													
														
															
																 
																 
																	c - > y  =  wa - > y ;   
																 
																 
																	c - > y  =  wa - > y ;   
															
														 
														
													
												
													
														
															
																
																	
																		
																			 
																		 
																	
																	
																		
																			 
																		 
																	
																	
																 
																@ -1043,8 +1044,7 @@ manage(Window w, XWindowAttributes *wa) {  
															
														 
														
													
														
															
																 
																 
																	if ( ( rettrans  =  XGetTransientForHint ( dpy ,  w ,  & trans )  = =  Success ) )   
																 
																 
																	if ( ( rettrans  =  XGetTransientForHint ( dpy ,  w ,  & trans )  = =  Success ) )   
															
														 
														
													
														
															
																 
																 
																		for ( t  =  clients ;  t  & &  t - > win  ! =  trans ;  t  =  t - > next ) ;   
																 
																 
																		for ( t  =  clients ;  t  & &  t - > win  ! =  trans ;  t  =  t - > next ) ;   
															
														 
														
													
														
															
																 
																 
																	if ( t )   
																 
																 
																	if ( t )   
															
														 
														
													
														
															
																 
																 
																		for ( i  =  0 ;  i  <  ntags ;  i + + )   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																			c - > tags [ i ]  =  t - > tags [ i ] ;   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																		memcpy ( c - > tags ,  t - > tags ,  sizeof  seltags ) ;   
															
														 
														
													
														
															
																 
																 
																	applyrules ( c ) ;   
																 
																 
																	applyrules ( c ) ;   
															
														 
														
													
														
															
																 
																 
																	if ( ! c - > isfloating )   
																 
																 
																	if ( ! c - > isfloating )   
															
														 
														
													
														
															
																 
																 
																		c - > isfloating  =  ( rettrans  = =  Success )  | |  c - > isfixed ;   
																 
																 
																		c - > isfloating  =  ( rettrans  = =  Success )  | |  c - > isfixed ;   
															
														 
														
													
												
													
														
															
																
																	
																		
																			 
																		 
																	
																	
																		
																			 
																		 
																	
																	
																 
																@ -1702,6 +1702,7 @@ unmanage(Client *c) {  
															
														 
														
													
														
															
																 
																 
																		focus ( NULL ) ;   
																 
																 
																		focus ( NULL ) ;   
															
														 
														
													
														
															
																 
																 
																	XUngrabButton ( dpy ,  AnyButton ,  AnyModifier ,  c - > win ) ;   
																 
																 
																	XUngrabButton ( dpy ,  AnyButton ,  AnyModifier ,  c - > win ) ;   
															
														 
														
													
														
															
																 
																 
																	setclientstate ( c ,  WithdrawnState ) ;   
																 
																 
																	setclientstate ( c ,  WithdrawnState ) ;   
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																	free ( c - > tags ) ;   
															
														 
														
													
														
															
																 
																 
																	free ( c ) ;   
																 
																 
																	free ( c ) ;   
															
														 
														
													
														
															
																 
																 
																	XSync ( dpy ,  False ) ;   
																 
																 
																	XSync ( dpy ,  False ) ;   
															
														 
														
													
														
															
																 
																 
																	XSetErrorHandler ( xerror ) ;   
																 
																 
																	XSetErrorHandler ( xerror ) ;   
															
														 
														
													
												
													
														
															
																
																	
																		
																			 
																		 
																	
																	
																		
																			 
																		 
																	
																	
																 
																@ -1838,6 +1839,7 @@ void  
															
														 
														
													
														
															
																 
																 
																view ( const  char  * arg )  {  
																 
																 
																view ( const  char  * arg )  {  
															
														 
														
													
														
															
																 
																 
																	unsigned  int  i ;   
																 
																 
																	unsigned  int  i ;   
															
														 
														
													
														
															
																 
																 
																
  
																 
																 
																
  
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																	memcpy ( prevtags ,  seltags ,  sizeof  seltags ) ;   
															
														 
														
													
														
															
																 
																 
																	for ( i  =  0 ;  i  <  ntags ;  i + + )   
																 
																 
																	for ( i  =  0 ;  i  <  ntags ;  i + + )   
															
														 
														
													
														
															
																 
																 
																		seltags [ i ]  =  arg  = =  NULL ;   
																 
																 
																		seltags [ i ]  =  arg  = =  NULL ;   
															
														 
														
													
														
															
																 
																 
																	i  =  idxoftag ( arg ) ;   
																 
																 
																	i  =  idxoftag ( arg ) ;   
															
														 
														
													
												
													
														
															
																
																	
																	
																	
																		
																			 
																		 
																	
																 
																@ -1846,6 +1848,16 @@ view(const char *arg) {  
															
														 
														
													
														
															
																 
																 
																	arrange ( ) ;   
																 
																 
																	arrange ( ) ;   
															
														 
														
													
														
															
																 
																 
																}  
																 
																 
																}  
															
														 
														
													
														
															
																 
																 
																
  
																 
																 
																
  
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																void  
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																viewprevtag ( const  char  * arg )  {  
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																	static  Bool  tmptags [ sizeof  tags  /  sizeof  tags [ 0 ] ] ;   
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																
  
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																	memcpy ( tmptags ,  seltags ,  sizeof  seltags ) ;   
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																	memcpy ( seltags ,  prevtags ,  sizeof  seltags ) ;   
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																	memcpy ( prevtags ,  tmptags ,  sizeof  seltags ) ;   
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																	arrange ( ) ;   
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																}  
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																
  
															
														 
														
													
														
															
																 
																 
																void  
																 
																 
																void  
															
														 
														
													
														
															
																 
																 
																zoom ( const  char  * arg )  {  
																 
																 
																zoom ( const  char  * arg )  {  
															
														 
														
													
														
															
																 
																 
																	Client  * c ;   
																 
																 
																	Client  * c ;