| 
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -237,6 +237,7 @@ static int xerrorstart(Display *dpy, XErrorEvent *ee); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					static void zoom(const Arg *arg); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					/* variables */ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					static const char broken[] = "broken"; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					static char stext[256], ntext[8]; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					static int screen; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					static int sw, sh;           /* X display screen geometry width, height */ | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -275,6 +276,7 @@ struct NumTags { char limitexceeded[sizeof(unsigned int) * 8 < LENGTH(tags) ? -1 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					/* function implementations */ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					void | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					applyrules(Client *c) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						const char *class, *instance; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						unsigned int i; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						const Rule *r; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						Monitor *m; | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -283,11 +285,13 @@ applyrules(Client *c) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						/* rule matching */ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						c->isfloating = c->tags = 0; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						if(XGetClassHint(dpy, c->win, &ch)) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							class = ch.res_class ? ch.res_class : broken; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							instance = ch.res_name ? ch.res_name : broken; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							for(i = 0; i < LENGTH(rules); i++) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								r = &rules[i]; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								if((!r->title || strstr(c->name, r->title)) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								&& (!r->class || (ch.res_class && strstr(ch.res_class, r->class))) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								&& (!r->instance || (ch.res_name && strstr(ch.res_name, r->instance)))) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								&& (!r->class || strstr(class, r->class)) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								&& (!r->instance || strstr(instance, r->instance))) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								{ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									c->isfloating = r->isfloating; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									c->tags |= r->tags; | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -1819,6 +1823,8 @@ void | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					updatetitle(Client *c) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						if(!gettextprop(c->win, netatom[NetWMName], c->name, sizeof c->name)) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							gettextprop(c->win, XA_WM_NAME, c->name, sizeof c->name); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						if(c->name[0] == '\0') /* hack to mark broken clients */ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							strcpy(c->name, broken); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					void | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
				
				 | 
				
					
  |