@ -97,6 +97,7 @@ typedef struct {  
															
														 
														
													
														
															
																 
																 
																typedef  struct  {  
																 
																 
																typedef  struct  {  
															
														 
														
													
														
															
																 
																 
																	const  char  * symbol ;   
																 
																 
																	const  char  * symbol ;   
															
														 
														
													
														
															
																 
																 
																	void  ( * arrange ) ( void ) ;   
																 
																 
																	void  ( * arrange ) ( void ) ;   
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																	void  ( * updategeom ) ( void ) ;   
															
														 
														
													
														
															
																 
																 
																}  Layout ;  
																 
																 
																}  Layout ;  
															
														 
														
													
														
															
																 
																 
																
  
																 
																 
																
  
															
														 
														
													
														
															
																 
																 
																typedef  struct  {  
																 
																 
																typedef  struct  {  
															
														 
														
													
												
													
														
															
																
																	
																		
																			 
																		 
																	
																	
																		
																			 
																		 
																	
																	
																 
																@ -152,7 +153,7 @@ void mappingnotify(XEvent *e);  
															
														 
														
													
														
															
																 
																 
																void  maprequest ( XEvent  * e ) ;  
																 
																 
																void  maprequest ( XEvent  * e ) ;  
															
														 
														
													
														
															
																 
																 
																void  monocle ( void ) ;  
																 
																 
																void  monocle ( void ) ;  
															
														 
														
													
														
															
																 
																 
																void  movemouse ( Client  * c ) ;  
																 
																 
																void  movemouse ( Client  * c ) ;  
															
														 
														
													
														
															
																 
																 
																Client  * nexttiled  ( Client  * c ) ;  
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																Client  * nextunfloating  ( Client  * c ) ;  
															
														 
														
													
														
															
																 
																 
																void  propertynotify ( XEvent  * e ) ;  
																 
																 
																void  propertynotify ( XEvent  * e ) ;  
															
														 
														
													
														
															
																 
																 
																void  quit ( const  char  * arg ) ;  
																 
																 
																void  quit ( const  char  * arg ) ;  
															
														 
														
													
														
															
																 
																 
																void  resize ( Client  * c ,  int  x ,  int  y ,  int  w ,  int  h ,  Bool  sizehints ) ;  
																 
																 
																void  resize ( Client  * c ,  int  x ,  int  y ,  int  w ,  int  h ,  Bool  sizehints ) ;  
															
														 
														
													
												
													
														
															
																
																	
																	
																	
																		
																			 
																		 
																	
																 
																@ -161,14 +162,11 @@ void restack(void);  
															
														 
														
													
														
															
																 
																 
																void  run ( void ) ;  
																 
																 
																void  run ( void ) ;  
															
														 
														
													
														
															
																 
																 
																void  scan ( void ) ;  
																 
																 
																void  scan ( void ) ;  
															
														 
														
													
														
															
																 
																 
																void  setclientstate ( Client  * c ,  long  state ) ;  
																 
																 
																void  setclientstate ( Client  * c ,  long  state ) ;  
															
														 
														
													
														
															
																 
																 
																void  setmfact ( const  char  * arg ) ;  
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																void  setup ( void ) ;  
																 
																 
																void  setup ( void ) ;  
															
														 
														
													
														
															
																 
																 
																void  spawn ( const  char  * arg ) ;  
																 
																 
																void  spawn ( const  char  * arg ) ;  
															
														 
														
													
														
															
																 
																 
																void  tag ( const  char  * arg ) ;  
																 
																 
																void  tag ( const  char  * arg ) ;  
															
														 
														
													
														
															
																 
																 
																unsigned  int  textnw ( const  char  * text ,  unsigned  int  len ) ;  
																 
																 
																unsigned  int  textnw ( const  char  * text ,  unsigned  int  len ) ;  
															
														 
														
													
														
															
																 
																 
																unsigned  int  textw ( const  char  * text ) ;  
																 
																 
																unsigned  int  textw ( const  char  * text ) ;  
															
														 
														
													
														
															
																 
																 
																void  tileresize ( Client  * c ,  int  x ,  int  y ,  int  w ,  int  h ) ;  
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																void  tile ( void ) ;  
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																void  togglefloating ( const  char  * arg ) ;  
																 
																 
																void  togglefloating ( const  char  * arg ) ;  
															
														 
														
													
														
															
																 
																 
																void  togglelayout ( const  char  * arg ) ;  
																 
																 
																void  togglelayout ( const  char  * arg ) ;  
															
														 
														
													
														
															
																 
																 
																void  toggletag ( const  char  * arg ) ;  
																 
																 
																void  toggletag ( const  char  * arg ) ;  
															
														 
														
													
												
													
														
															
																
																	
																	
																	
																		
																			 
																		 
																	
																 
																@ -192,9 +190,8 @@ void zoom(const char *arg);  
															
														 
														
													
														
															
																 
																 
																char  stext [ 256 ] ;  
																 
																 
																char  stext [ 256 ] ;  
															
														 
														
													
														
															
																 
																 
																int  screen ,  sx ,  sy ,  sw ,  sh ;  
																 
																 
																int  screen ,  sx ,  sy ,  sw ,  sh ;  
															
														 
														
													
														
															
																 
																 
																int  ( * xerrorxlib ) ( Display  * ,  XErrorEvent  * ) ;  
																 
																 
																int  ( * xerrorxlib ) ( Display  * ,  XErrorEvent  * ) ;  
															
														 
														
													
														
															
																 
																 
																int  bx ,  by ,  bw ,  bh ,  blw ,  mx ,  my ,  mw ,  mh ,  tx ,  ty ,  tw ,  th ,  wx ,  wy ,  ww ,  wh ;  
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																int  bx ,  by ,  bw ,  bh ,  blw ,  wx ,  wy ,  ww ,  wh ;  
															
														 
														
													
														
															
																 
																 
																int  seltags  =  0 ;  
																 
																 
																int  seltags  =  0 ;  
															
														 
														
													
														
															
																 
																 
																double  mfact ;  
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																unsigned  int  numlockmask  =  0 ;  
																 
																 
																unsigned  int  numlockmask  =  0 ;  
															
														 
														
													
														
															
																 
																 
																void  ( * handler [ LASTEvent ] )  ( XEvent  * )  =  {  
																 
																 
																void  ( * handler [ LASTEvent ] )  ( XEvent  * )  =  {  
															
														 
														
													
														
															
																 
																 
																	[ ButtonPress ]  =  buttonpress ,   
																 
																 
																	[ ButtonPress ]  =  buttonpress ,   
															
														 
														
													
												
													
														
															
																
																	
																		
																			 
																		 
																	
																	
																		
																			 
																		 
																	
																	
																 
																@ -1072,7 +1069,7 @@ movemouse(Client *c) {  
															
														 
														
													
														
															
																 
																 
																}  
																 
																 
																}  
															
														 
														
													
														
															
																 
																 
																
  
																 
																 
																
  
															
														 
														
													
														
															
																 
																 
																Client  *  
																 
																 
																Client  *  
															
														 
														
													
														
															
																 
																 
																nexttiled  ( Client  * c )  {  
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																nextunfloating  ( Client  * c )  {  
															
														 
														
													
														
															
																 
																 
																	for ( ;  c  & &  ( c - > isfloating  | |  ! isvisible ( c ,  NULL ) ) ;  c  =  c - > next ) ;   
																 
																 
																	for ( ;  c  & &  ( c - > isfloating  | |  ! isvisible ( c ,  NULL ) ) ;  c  =  c - > next ) ;   
															
														 
														
													
														
															
																 
																 
																	return  c ;   
																 
																 
																	return  c ;   
															
														 
														
													
														
															
																 
																 
																}  
																 
																 
																}  
															
														 
														
													
												
													
														
															
																
																	
																		
																			 
																		 
																	
																	
																		
																			 
																		 
																	
																	
																 
																@ -1337,27 +1334,6 @@ setclientstate(Client *c, long state) {  
															
														 
														
													
														
															
																 
																 
																			PropModeReplace ,  ( unsigned  char  * ) data ,  2 ) ;   
																 
																 
																			PropModeReplace ,  ( unsigned  char  * ) data ,  2 ) ;   
															
														 
														
													
														
															
																 
																 
																}  
																 
																 
																}  
															
														 
														
													
														
															
																 
																 
																
  
																 
																 
																
  
															
														 
														
													
														
															
																 
																 
																/* TODO: move this into tile.c */  
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																void  
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																setmfact ( const  char  * arg )  {  
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																	double  d ;   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																
  
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																	if ( ! lt - > arrange )  /* TODO: check this against the actual tile() function */   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																		return ;   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																	if ( ! arg )   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																		mfact  =  MFACT ;   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																	else  {   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																		d  =  strtod ( arg ,  NULL ) ;   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																		if ( arg [ 0 ]  = =  ' - '  | |  arg [ 0 ]  = =  ' + ' )   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																			d  + =  mfact ;   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																		if ( d  <  0.1  | |  d  >  0.9 )   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																			return ;   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																		mfact  =  d ;   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																	}   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																	updategeom ( ) ;   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																	arrange ( ) ;   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																}  
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																
  
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																void  
																 
																 
																void  
															
														 
														
													
														
															
																 
																 
																setup ( void )  {  
																 
																 
																setup ( void )  {  
															
														 
														
													
														
															
																 
																 
																	unsigned  int  i ,  w ;   
																 
																 
																	unsigned  int  i ,  w ;   
															
														 
														
													
												
													
														
															
																
																	
																	
																	
																		
																			 
																		 
																	
																 
																@ -1372,7 +1348,6 @@ setup(void) {  
															
														 
														
													
														
															
																 
																 
																	sw  =  DisplayWidth ( dpy ,  screen ) ;   
																 
																 
																	sw  =  DisplayWidth ( dpy ,  screen ) ;   
															
														 
														
													
														
															
																 
																 
																	sh  =  DisplayHeight ( dpy ,  screen ) ;   
																 
																 
																	sh  =  DisplayHeight ( dpy ,  screen ) ;   
															
														 
														
													
														
															
																 
																 
																	bh  =  dc . font . height  +  2 ;   
																 
																 
																	bh  =  dc . font . height  +  2 ;   
															
														 
														
													
														
															
																 
																 
																	mfact  =  MFACT ;   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																	updategeom ( ) ;   
																 
																 
																	updategeom ( ) ;   
															
														 
														
													
														
															
																 
																 
																
  
																 
																 
																
  
															
														 
														
													
														
															
																 
																 
																	/* init atoms */   
																 
																 
																	/* init atoms */   
															
														 
														
													
												
													
														
															
																
																	
																		
																			 
																		 
																	
																	
																		
																			 
																		 
																	
																	
																 
																@ -1493,51 +1468,6 @@ 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  
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																tile ( void )  {  
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																	int  y ,  h ;   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																	unsigned  int  i ,  n ;   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																	Client  * c ;   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																
  
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																	for ( n  =  0 ,  c  =  nexttiled ( clients ) ;  c ;  c  =  nexttiled ( c - > next ) ,  n + + ) ;   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																	if ( n  = =  0 )   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																		return ;   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																
  
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																	/* master */   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																	c  =  nexttiled ( clients ) ;   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																
  
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																	if ( n  = =  1 )   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																		tileresize ( c ,  wx ,  wy ,  ww  -  2  *  c - > bw ,  wh  -  2  *  c - > bw ) ;   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																	else   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																		tileresize ( c ,  mx ,  my ,  mw  -  2  *  c - > bw ,  mh  -  2  *  c - > bw ) ;   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																
  
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																	if ( - - n  = =  0 )   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																		return ;   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																
  
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																	/* tile stack */   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																	y  =  ty ;   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																	h  =  th  /  n ;   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																	if ( h  <  bh )   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																		h  =  th ;   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																
  
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																	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 - > bw ,  ( ty  +  th )  -  y  -  2  *  c - > bw ) ;   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																		else   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																			tileresize ( c ,  tx ,  y ,  tw  -  2  *  c - > bw ,  h  -  2  *  c - > bw ) ;   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																		if ( h  ! =  th )   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																			y  =  c - > y  +  c - > h  +  2  *  c - > bw ;   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																	}   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																}  
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																
  
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																void  
																 
																 
																void  
															
														 
														
													
														
															
																 
																 
																togglefloating ( const  char  * arg )  {  
																 
																 
																togglefloating ( const  char  * arg )  {  
															
														 
														
													
														
															
																 
																 
																	if ( ! sel )   
																 
																 
																	if ( ! sel )   
															
														 
														
													
												
													
														
															
																
																	
																		
																			 
																		 
																	
																	
																		
																			 
																		 
																	
																	
																 
																@ -1646,6 +1576,7 @@ updatebar(void) {  
															
														 
														
													
														
															
																 
																 
																
  
																 
																 
																
  
															
														 
														
													
														
															
																 
																 
																void  
																 
																 
																void  
															
														 
														
													
														
															
																 
																 
																updategeom ( void )  {  
																 
																 
																updategeom ( void )  {  
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																	unsigned  int  i ;   
															
														 
														
													
														
															
																 
																 
																
  
																 
																 
																
  
															
														 
														
													
														
															
																 
																 
																	/* bar geometry */   
																 
																 
																	/* bar geometry */   
															
														 
														
													
														
															
																 
																 
																	bx  =  0 ;   
																 
																 
																	bx  =  0 ;   
															
														 
														
													
												
													
														
															
																
																	
																	
																	
																		
																			 
																		 
																	
																 
																@ -1658,17 +1589,10 @@ updategeom(void) {  
															
														 
														
													
														
															
																 
																 
																	ww  =  sw ;   
																 
																 
																	ww  =  sw ;   
															
														 
														
													
														
															
																 
																 
																	wh  =  sh  -  bh ;   
																 
																 
																	wh  =  sh  -  bh ;   
															
														 
														
													
														
															
																 
																 
																
  
																 
																 
																
  
															
														 
														
													
														
															
																 
																 
																	/* master area geometry */   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																	mx  =  wx ;   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																	my  =  wy ;   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																	mw  =  mfact  *  ww ;   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																	mh  =  wh ;   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																
  
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																	/* tile area geometry */   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																	tx  =  mx  +  mw ;   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																	ty  =  wy ;   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																	tw  =  ww  -  mw ;   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																	th  =  wh ;   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																	/* update layout geometries */   
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																	for ( i  =  0 ;  i  <  LENGTH ( layouts ) ;  i + + )   
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																		if ( layouts [ i ] . updategeom )   
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																			layouts [ i ] . updategeom ( ) ;   
															
														 
														
													
														
															
																 
																 
																}  
																 
																 
																}  
															
														 
														
													
														
															
																 
																 
																
  
																 
																 
																
  
															
														 
														
													
														
															
																 
																 
																void  
																 
																 
																void  
															
														 
														
													
												
													
														
															
																
																	
																		
																			 
																		 
																	
																	
																		
																			 
																		 
																	
																	
																 
																@ -1789,22 +1713,6 @@ xerrorstart(Display *dpy, XErrorEvent *ee) {  
															
														 
														
													
														
															
																 
																 
																	return  - 1 ;   
																 
																 
																	return  - 1 ;   
															
														 
														
													
														
															
																 
																 
																}  
																 
																 
																}  
															
														 
														
													
														
															
																 
																 
																
  
																 
																 
																
  
															
														 
														
													
														
															
																 
																 
																/* TODO: move this into tile.c */  
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																void  
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																zoom ( const  char  * arg )  {  
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																	Client  * c  =  sel ;   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																
  
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																	if ( c  = =  nexttiled ( clients ) )   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																		if ( ! c  | |  ! ( c  =  nexttiled ( c - > next ) ) )   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																			return ;   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																	if ( lt - > arrange  & &  ! sel - > isfloating )  {  /* TODO: check this against tile() */   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																		detach ( c ) ;   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																		attach ( c ) ;   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																		focus ( c ) ;   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																	}   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																	arrange ( ) ;   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																}  
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																
  
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																int  
																 
																 
																int  
															
														 
														
													
														
															
																 
																 
																main ( int  argc ,  char  * argv [ ] )  {  
																 
																 
																main ( int  argc ,  char  * argv [ ] )  {  
															
														 
														
													
														
															
																 
																 
																	if ( argc  = =  2  & &  ! strcmp ( " -v " ,  argv [ 1 ] ) )   
																 
																 
																	if ( argc  = =  2  & &  ! strcmp ( " -v " ,  argv [ 1 ] ) )