|  |  | @ -7,7 +7,7 @@ | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
		
			
				
					|  |  |  | /* static */ | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
		
			
				
					|  |  |  | static char config[128]; | 
			
		
	
		
			
				
					|  |  |  | static char prop[128]; | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
		
			
				
					|  |  |  | static void | 
			
		
	
		
			
				
					|  |  |  | attachstack(Client *c) { | 
			
		
	
	
		
			
				
					|  |  | @ -182,23 +182,23 @@ killclient(const char *arg) { | 
			
		
	
		
			
				
					|  |  |  | } | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
		
			
				
					|  |  |  | Bool | 
			
		
	
		
			
				
					|  |  |  | loadconfig(Client *c) { | 
			
		
	
		
			
				
					|  |  |  | loadprops(Client *c) { | 
			
		
	
		
			
				
					|  |  |  | unsigned int i; | 
			
		
	
		
			
				
					|  |  |  | Bool result = False; | 
			
		
	
		
			
				
					|  |  |  | XTextProperty name; | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
		
			
				
					|  |  |  | /* check if window has set a property */ | 
			
		
	
		
			
				
					|  |  |  | name.nitems = 0; | 
			
		
	
		
			
				
					|  |  |  | XGetTextProperty(dpy, c->win, &name, dwmconfig); | 
			
		
	
		
			
				
					|  |  |  | XGetTextProperty(dpy, c->win, &name, dwmprops); | 
			
		
	
		
			
				
					|  |  |  | if(name.nitems && name.encoding == XA_STRING) { | 
			
		
	
		
			
				
					|  |  |  | strncpy(config, (char *)name.value, sizeof config - 1); | 
			
		
	
		
			
				
					|  |  |  | config[sizeof config - 1] = '\0'; | 
			
		
	
		
			
				
					|  |  |  | strncpy(prop, (char *)name.value, sizeof prop - 1); | 
			
		
	
		
			
				
					|  |  |  | prop[sizeof prop - 1] = '\0'; | 
			
		
	
		
			
				
					|  |  |  | XFree(name.value); | 
			
		
	
		
			
				
					|  |  |  | for(i = 0; i < ntags && i < sizeof config - 1 && config[i] != '\0'; i++) | 
			
		
	
		
			
				
					|  |  |  | if((c->tags[i] = config[i] == '1')) | 
			
		
	
		
			
				
					|  |  |  | for(i = 0; i < ntags && i < sizeof prop - 1 && prop[i] != '\0'; i++) | 
			
		
	
		
			
				
					|  |  |  | if((c->tags[i] = prop[i] == '1')) | 
			
		
	
		
			
				
					|  |  |  | result = True; | 
			
		
	
		
			
				
					|  |  |  | if(i < sizeof config - 1 && config[i] != '\0') | 
			
		
	
		
			
				
					|  |  |  | c->isfloating = config[i] == '1'; | 
			
		
	
		
			
				
					|  |  |  | if(i < sizeof prop - 1 && prop[i] != '\0') | 
			
		
	
		
			
				
					|  |  |  | c->isfloating = prop[i] == '1'; | 
			
		
	
		
			
				
					|  |  |  | } | 
			
		
	
		
			
				
					|  |  |  | return result; | 
			
		
	
		
			
				
					|  |  |  | } | 
			
		
	
	
		
			
				
					|  |  | @ -249,11 +249,11 @@ manage(Window w, XWindowAttributes *wa) { | 
			
		
	
		
			
				
					|  |  |  | if(t) | 
			
		
	
		
			
				
					|  |  |  | for(i = 0; i < ntags; i++) | 
			
		
	
		
			
				
					|  |  |  | c->tags[i] = t->tags[i]; | 
			
		
	
		
			
				
					|  |  |  | if(!loadconfig(c)) | 
			
		
	
		
			
				
					|  |  |  | if(!loadprops(c)) | 
			
		
	
		
			
				
					|  |  |  | applyrules(c); | 
			
		
	
		
			
				
					|  |  |  | if(!c->isfloating) | 
			
		
	
		
			
				
					|  |  |  | c->isfloating = (rettrans == Success) || c->isfixed; | 
			
		
	
		
			
				
					|  |  |  | saveconfig(c); | 
			
		
	
		
			
				
					|  |  |  | saveprops(c); | 
			
		
	
		
			
				
					|  |  |  | attach(c); | 
			
		
	
		
			
				
					|  |  |  | attachstack(c); | 
			
		
	
		
			
				
					|  |  |  | XMoveResizeWindow(dpy, c->win, c->x, c->y, c->w, c->h); /* some windows require this */ | 
			
		
	
	
		
			
				
					|  |  | @ -325,16 +325,16 @@ resize(Client *c, int x, int y, int w, int h, Bool sizehints) { | 
			
		
	
		
			
				
					|  |  |  | } | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
		
			
				
					|  |  |  | void | 
			
		
	
		
			
				
					|  |  |  | saveconfig(Client *c) { | 
			
		
	
		
			
				
					|  |  |  | saveprops(Client *c) { | 
			
		
	
		
			
				
					|  |  |  | unsigned int i; | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
		
			
				
					|  |  |  | for(i = 0; i < ntags && i < sizeof config - 1; i++) | 
			
		
	
		
			
				
					|  |  |  | config[i] = c->tags[i] ? '1' : '0'; | 
			
		
	
		
			
				
					|  |  |  | if(i < sizeof config - 1) | 
			
		
	
		
			
				
					|  |  |  | config[i++] = c->isfloating ? '1' : '0'; | 
			
		
	
		
			
				
					|  |  |  | config[i] = '\0'; | 
			
		
	
		
			
				
					|  |  |  | XChangeProperty(dpy, c->win, dwmconfig, XA_STRING, 8, | 
			
		
	
		
			
				
					|  |  |  | PropModeReplace, (unsigned char *)config, i); | 
			
		
	
		
			
				
					|  |  |  | for(i = 0; i < ntags && i < sizeof prop - 1; 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, dwmprops, XA_STRING, 8, | 
			
		
	
		
			
				
					|  |  |  | PropModeReplace, (unsigned char *)prop, i); | 
			
		
	
		
			
				
					|  |  |  | } | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
		
			
				
					|  |  |  | void | 
			
		
	
	
		
			
				
					|  |  | 
 |