@ -250,7 +250,8 @@ typedef struct {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
						XSetWindowAttributes  attrs ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
						int  scr ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
						bool  isfixed ;  /* is fixed geometry? */   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
						int  fx ,  fy ,  fw ,  fh ;  /* fixed geometry */   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
						int  l ,  t ;  /* left and top offset */   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
						int  gm ;  /* geometry mask */   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
						int  tw ,  th ;  /* tty width and height */   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
						int  w ,  h ;  /* window width and height */   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
						int  ch ;  /* char height */   
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				
					@ -406,6 +407,7 @@ static void xdrawcursor(void);  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					static  void  xinit ( void ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					static  void  xloadcols ( void ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					static  int  xsetcolorname ( int ,  const  char  * ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					static  int  xgeommasktogravity ( int ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					static  int  xloadfont ( Font  * ,  FcPattern  * ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					static  void  xloadfonts ( char  * ,  double ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					static  int  xloadfontset ( Font  * ) ;  
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				
					@ -2804,18 +2806,24 @@ xhints(void) {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
						XSizeHints  * sizeh  =  NULL ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
						sizeh  =  XAllocSizeHints ( ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
						if ( xw . isfixed  = =  False )  {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
							sizeh - > flags  =  PSize  |  PResizeInc  |  PBaseSize ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
							sizeh - > height  =  xw . h ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
							sizeh - > width  =  xw . w ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
							sizeh - > height_inc  =  xw . ch ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
							sizeh - > width_inc  =  xw . cw ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
							sizeh - > base_height  =  2  *  borderpx ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
							sizeh - > base_width  =  2  *  borderpx ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
						}  else  {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
							sizeh - > flags  =  PMaxSize  |  PMinSize ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
							sizeh - > min_width  =  sizeh - > max_width  =  xw . fw ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
							sizeh - > min_height  =  sizeh - > max_height  =  xw . fh ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
						sizeh - > flags  =  PSize  |  PResizeInc  |  PBaseSize ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
						sizeh - > height  =  xw . h ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
						sizeh - > width  =  xw . w ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
						sizeh - > height_inc  =  xw . ch ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
						sizeh - > width_inc  =  xw . cw ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
						sizeh - > base_height  =  2  *  borderpx ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
						sizeh - > base_width  =  2  *  borderpx ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
						if ( xw . isfixed  = =  True )  {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
							sizeh - > flags  | =  PMaxSize  |  PMinSize ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
							sizeh - > min_width  =  sizeh - > max_width  =  xw . w ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
							sizeh - > min_height  =  sizeh - > max_height  =  xw . h ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
						}   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
						if ( xw . gm  &  ( XValue | YValue ) )  {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
							sizeh - > flags  | =  USPosition  |  PWinGravity ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
							sizeh - > x  =  xw . l ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
							sizeh - > y  =  xw . t ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
							sizeh - > win_gravity  =  xgeommasktogravity ( xw . gm ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
						}   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
						XSetWMProperties ( xw . dpy ,  xw . win ,  NULL ,  NULL ,  NULL ,  0 ,  sizeh ,  & wm ,   
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				
					@ -2823,6 +2831,19 @@ xhints(void) {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
						XFree ( sizeh ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					}  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					int  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					xgeommasktogravity ( int  mask )  {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
						switch ( mask  &  ( XNegative | YNegative ) )  {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
						case  0 :   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
							return  NorthWestGravity ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
						case  XNegative :   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
							return  NorthEastGravity ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
						case  YNegative :   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
							return  SouthWestGravity ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
						}   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
						return  SouthEastGravity ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					}  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					int  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					xloadfont ( Font  * f ,  FcPattern  * pattern )  {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
						FcPattern  * match ;   
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				
					@ -2968,7 +2989,6 @@ xinit(void) {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
						XGCValues  gcvalues ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
						Cursor  cursor ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
						Window  parent ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
						int  sw ,  sh ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
						pid_t  thispid  =  getpid ( ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
						if ( ! ( xw . dpy  =  XOpenDisplay ( NULL ) ) )   
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				
					@ -2988,23 +3008,12 @@ xinit(void) {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
						xloadcols ( ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
						/* adjust fixed window geometry */   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
						if ( xw . isfixed )  {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
							sw  =  DisplayWidth ( xw . dpy ,  xw . scr ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
							sh  =  DisplayHeight ( xw . dpy ,  xw . scr ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
							if ( xw . fx  <  0 )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
								xw . fx  =  sw  +  xw . fx  -  xw . fw  -  1 ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
							if ( xw . fy  <  0 )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
								xw . fy  =  sh  +  xw . fy  -  xw . fh  -  1 ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
							xw . h  =  xw . fh ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
							xw . w  =  xw . fw ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
						}  else  {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
							/* window - default size */   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
							xw . h  =  2  *  borderpx  +  term . row  *  xw . ch ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
							xw . w  =  2  *  borderpx  +  term . col  *  xw . cw ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
							xw . fx  =  0 ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
							xw . fy  =  0 ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
						}   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
						xw . w  =  2  *  borderpx  +  term . col  *  xw . cw ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
						xw . h  =  2  *  borderpx  +  term . row  *  xw . ch ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
						if ( xw . gm  &  XNegative )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
							xw . l  + =  DisplayWidth ( xw . dpy ,  xw . scr )  -  xw . w  -  2 ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
						if ( xw . gm  &  YNegative )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
							xw . t  + =  DisplayWidth ( xw . dpy ,  xw . scr )  -  xw . h  -  2 ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
						/* Events */   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
						xw . attrs . background_pixel  =  dc . col [ defaultbg ] . pixel ;   
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				
					@ -3017,7 +3026,7 @@ xinit(void) {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
						parent  =  opt_embed  ?  strtol ( opt_embed ,  NULL ,  0 )  :  \   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
								XRootWindow ( xw . dpy ,  xw . scr ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
						xw . win  =  XCreateWindow ( xw . dpy ,  parent ,  xw . fx ,  xw . fy ,   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
						xw . win  =  XCreateWindow ( xw . dpy ,  parent ,  xw . l ,  xw . t ,   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
								xw . w ,  xw . h ,  0 ,  XDefaultDepth ( xw . dpy ,  xw . scr ) ,  InputOutput ,   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
								xw . vis ,  CWBackPixel  |  CWBorderPixel  |  CWBitGravity   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
								|  CWEventMask  |  CWColormap ,  & xw . attrs ) ;   
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				
					@ -3714,10 +3723,7 @@ run(void) {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
						}   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
						ttynew ( ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
						if ( ! xw . isfixed )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
							cresize ( w ,  h ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
						else   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
							cresize ( xw . fw ,  xw . fh ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
						cresize ( w ,  h ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
						gettimeofday ( & last ,  NULL ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
						lastblink  =  last ;   
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				
					@ -3807,11 +3813,10 @@ usage(void) {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					int  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					main ( int  argc ,  char  * argv [ ] )  {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
						int  bitm ,  xr ,  yr ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
						uint  wr ,  hr ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
						char  * titles ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
						uint  cols  =  80 ,  rows  =  24 ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
						xw . fw  =  xw . fh   =  xw . fx  =  xw . fy   =  0 ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
						xw . l  =  xw . t   =  0 ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
						xw . isfixed  =  False ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
						ARGBEGIN  {   
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				
					@ -3835,22 +3840,11 @@ main(int argc, char *argv[]) {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
							opt_font  =  EARGF ( usage ( ) ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
							break ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
						case  ' g ' :   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
							bitm  =  XParseGeometry ( EARGF ( usage ( ) ) ,  & xr ,  & yr ,  & wr ,  & hr ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
							if ( bitm  &  XValue )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
								xw . fx  =  xr ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
							if ( bitm  &  YValue )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
								xw . fy  =  yr ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
							if ( bitm  &  WidthValue )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
								xw . fw  =  ( int ) wr ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
							if ( bitm  &  HeightValue )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
								xw . fh  =  ( int ) hr ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
							if ( bitm  &  XNegative  & &  xw . fx  = =  0 )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
								xw . fx  =  - 1 ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
							if ( bitm  &  YNegative  & &  xw . fy  = =  0 )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
								xw . fy  =  - 1 ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
							if ( xw . fh  ! =  0  & &  xw . fw  ! =  0 )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
								xw . isfixed  =  True ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
							xw . gm  =  XParseGeometry ( EARGF ( usage ( ) ) ,   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
									& xw . l ,  & xw . t ,  & cols ,  & rows ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
							break ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
						case  ' i ' :   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
							xw . isfixed  =  True ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
							break ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
						case  ' o ' :   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
							opt_io  =  EARGF ( usage ( ) ) ;   
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				
					@ -3869,7 +3863,7 @@ main(int argc, char *argv[]) {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					run :  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
						setlocale ( LC_CTYPE ,  " " ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
						XSetLocaleModifiers ( " " ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
						tnew ( 80 ,  24 ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
						tnew ( cols ?  cols  :  1 ,  rows ?  rows  :  1 ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
						xinit ( ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
						selinit ( ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
						run ( ) ;