| 
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -28,14 +28,15 @@ static unsigned int nrules = 0; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					static char prop[512]; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					static void | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					persisttags(Client *c) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					{ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					persistconfig(Client *c) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						unsigned int i; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						for(i = 0; i < ntags && i < sizeof prop - 1; i++) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							prop[i] = c->tags[i] ? '+' : '-'; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							prop[i] = c->tags[i] ? '1' : '0'; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						if(i < sizeof prop - 1) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							prop[i++] = c->isfloating ? '1' : '0'; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						prop[i] = '\0'; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						XChangeProperty(dpy, c->win, dwmtags, XA_STRING, 8, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						XChangeProperty(dpy, c->win, dwmconfig, XA_STRING, 8, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								PropModeReplace, (unsigned char *)prop, i); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -93,14 +94,16 @@ settags(Client *c, Client *trans) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						else { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							/* check if window has set a property */ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							name.nitems = 0; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							XGetTextProperty(dpy, c->win, &name, dwmtags); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							XGetTextProperty(dpy, c->win, &name, dwmconfig); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							if(name.nitems && name.encoding == XA_STRING) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								strncpy(prop, (char *)name.value, sizeof prop - 1); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								prop[sizeof prop - 1] = '\0'; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								XFree(name.value); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								for(i = 0; i < ntags && i < sizeof prop - 1 && prop[i] != '\0'; i++) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									if((c->tags[i] = prop[i] == '+')) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									if((c->tags[i] = prop[i] == '1')) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
										matched = True; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								if(i < sizeof prop - 1 && prop[i] != '\0') | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									c->isfloating = prop[i] == '1'; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						if(!matched) { | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -127,7 +130,7 @@ settags(Client *c, Client *trans) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						if(!matched) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							for(i = 0; i < ntags; i++) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								c->tags[i] = seltag[i]; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						persisttags(c); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						persistconfig(c); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					void | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -142,7 +145,17 @@ tag(const char *arg) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						if(i >= 0 && i < ntags) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							sel->tags[i] = True; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						if(sel) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							persisttags(sel); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							persistconfig(sel); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						arrange(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					void | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					togglefloating(const char *arg) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						if(!sel || isfloating()) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							return; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						sel->isfloating = !sel->isfloating; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						if(sel->isfloating) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							resize(sel, sel->x, sel->y, sel->w, sel->h, True); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						arrange(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -158,7 +171,7 @@ toggletag(const char *arg) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						if(j == ntags) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							sel->tags[i] = True; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						if(sel) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							persisttags(sel); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							persistconfig(sel); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						arrange(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
				
				 | 
				
					
  |