prepared merging layout.c and tag.c into screen.c
							parent
							
								
									78d1a22d4e
								
							
						
					
					
						commit
						96d7fe16ea
					
				
							
								
								
									
										34
									
								
								client.c
								
								
								
								
							
							
						
						
									
										34
									
								
								client.c
								
								
								
								
							|  | @ -185,15 +185,8 @@ Bool | |||
| 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, dwmprops); | ||||
| 	if(name.nitems && name.encoding == XA_STRING) { | ||||
| 		strncpy(prop, (char *)name.value, sizeof prop - 1); | ||||
| 		prop[sizeof prop - 1] = '\0'; | ||||
| 		XFree(name.value); | ||||
| 	if(gettextprop(c->win, dwmprops, prop, sizeof prop)) { | ||||
| 		for(i = 0; i < ntags && i < sizeof prop - 1 && prop[i] != '\0'; i++) | ||||
| 			if((c->tags[i] = prop[i] == '1')) | ||||
| 				result = True; | ||||
|  | @ -424,27 +417,6 @@ updatesizehints(Client *c) { | |||
| 
 | ||||
| void | ||||
| updatetitle(Client *c) { | ||||
| 	char **list = NULL; | ||||
| 	int n; | ||||
| 	XTextProperty name; | ||||
| 
 | ||||
| 	name.nitems = 0; | ||||
| 	c->name[0] = 0; | ||||
| 	XGetTextProperty(dpy, c->win, &name, netatom[NetWMName]); | ||||
| 	if(!name.nitems) | ||||
| 		XGetWMName(dpy, c->win, &name); | ||||
| 	if(!name.nitems) | ||||
| 		return; | ||||
| 	if(name.encoding == XA_STRING) | ||||
| 		strncpy(c->name, (char *)name.value, sizeof c->name - 1); | ||||
| 	else { | ||||
| 		if(XmbTextPropertyToTextList(dpy, &name, &list, &n) >= Success | ||||
| 		&& n > 0 && *list) | ||||
| 		{ | ||||
| 			strncpy(c->name, *list, sizeof c->name - 1); | ||||
| 			XFreeStringList(list); | ||||
| 		} | ||||
| 	} | ||||
| 	c->name[sizeof c->name - 1] = '\0'; | ||||
| 	XFree(name.value); | ||||
| 	if(!gettextprop(c->win, netatom[NetWMName], c->name, sizeof c->name)) | ||||
| 		gettextprop(c->win, wmatom[WMName], c->name, sizeof c->name); | ||||
| } | ||||
|  |  | |||
							
								
								
									
										4
									
								
								dwm.h
								
								
								
								
							
							
						
						
									
										4
									
								
								dwm.h
								
								
								
								
							|  | @ -39,7 +39,7 @@ enum { BarTop, BarBot, BarOff };			/* bar position */ | |||
| enum { CurNormal, CurResize, CurMove, CurLast };	/* cursor */ | ||||
| enum { ColBorder, ColFG, ColBG, ColLast };		/* color */ | ||||
| enum { NetSupported, NetWMName, NetLast };		/* EWMH atoms */ | ||||
| enum { WMProtocols, WMDelete, WMState, WMLast };	/* default atoms */ | ||||
| enum { WMProtocols, WMDelete, WMName, WMState, WMLast };/* default atoms */ | ||||
| 
 | ||||
| typedef struct Client Client; | ||||
| struct Client { | ||||
|  | @ -131,6 +131,8 @@ void togglebar(const char *arg);	/* shows/hides the bar */ | |||
| void togglemax(const char *arg);	/* toggles maximization of floating client */ | ||||
| 
 | ||||
| /* main.c */ | ||||
| Bool gettextprop(Window w, Atom atom, | ||||
| 		char *text, unsigned int size); /* return text property, UTF-8 compliant */ | ||||
| void updatebarpos(void);		/* updates the bar position */ | ||||
| void quit(const char *arg);		/* quit dwm nicely */ | ||||
| int xerror(Display *dsply, XErrorEvent *ee);	/* dwm's X error handler */ | ||||
|  |  | |||
							
								
								
									
										15
									
								
								layout.c
								
								
								
								
							
							
						
						
									
										15
									
								
								layout.c
								
								
								
								
							|  | @ -98,7 +98,6 @@ void | |||
| initlayouts(void) { | ||||
| 	unsigned int i, w; | ||||
| 
 | ||||
| 	/* TODO deserialize ltidx if present */ | ||||
| 	nlayouts = sizeof layouts / sizeof layouts[0]; | ||||
| 	for(blw = i = 0; i < nlayouts; i++) { | ||||
| 		w = textw(layouts[i].symbol); | ||||
|  | @ -110,21 +109,13 @@ initlayouts(void) { | |||
| void | ||||
| loaddwmprops(void) { | ||||
| 	unsigned int i; | ||||
| 	XTextProperty name; | ||||
| 
 | ||||
| 	/* check if window has set a property */ | ||||
| 	name.nitems = 0; | ||||
| 	XGetTextProperty(dpy, root, &name, dwmprops); | ||||
| 	if(name.nitems && name.encoding == XA_STRING) { | ||||
| 		strncpy(prop, (char *)name.value, sizeof prop - 1); | ||||
| 		prop[sizeof prop - 1] = '\0'; | ||||
| 		XFree(name.value); | ||||
| 	if(gettextprop(root, dwmprops, prop, sizeof prop)) { | ||||
| 		for(i = 0; i < ntags && i < sizeof prop - 1 && prop[i] != '\0'; i++) | ||||
| 			seltags[i] = prop[i] == '1'; | ||||
| 		if(i < sizeof prop - 1 && prop[i] != '\0') { | ||||
| 			i = prop[i]; | ||||
| 			if(i < nlayouts) | ||||
| 				ltidx = i; | ||||
| 			if(prop[i] < nlayouts) | ||||
| 				ltidx = prop[i]; | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
|  |  | |||
							
								
								
									
										28
									
								
								main.c
								
								
								
								
							
							
						
						
									
										28
									
								
								main.c
								
								
								
								
							|  | @ -143,6 +143,7 @@ setup(void) { | |||
| 	dwmprops = XInternAtom(dpy, "_DWM_PROPERTIES", False); | ||||
| 	wmatom[WMProtocols] = XInternAtom(dpy, "WM_PROTOCOLS", False); | ||||
| 	wmatom[WMDelete] = XInternAtom(dpy, "WM_DELETE_WINDOW", False); | ||||
| 	wmatom[WMName] = XInternAtom(dpy, "WM_NAME", False); | ||||
| 	wmatom[WMState] = XInternAtom(dpy, "WM_STATE", False); | ||||
| 	netatom[NetSupported] = XInternAtom(dpy, "_NET_SUPPORTED", False); | ||||
| 	netatom[NetWMName] = XInternAtom(dpy, "_NET_WM_NAME", False); | ||||
|  | @ -220,6 +221,33 @@ xerrorstart(Display *dsply, XErrorEvent *ee) { | |||
| 
 | ||||
| /* extern */ | ||||
| 
 | ||||
| Bool | ||||
| gettextprop(Window w, Atom atom, char *text, unsigned int size) { | ||||
| 	char **list = NULL; | ||||
| 	int n; | ||||
| 	XTextProperty name; | ||||
| 
 | ||||
| 	if(!text || size == 0) | ||||
| 		return False; | ||||
| 	text[0] = '\0'; | ||||
| 	XGetTextProperty(dpy, w, &name, atom); | ||||
| 	if(!name.nitems) | ||||
| 		return False; | ||||
| 	if(name.encoding == XA_STRING) | ||||
| 		strncpy(text, (char *)name.value, size - 1); | ||||
| 	else { | ||||
| 		if(XmbTextPropertyToTextList(dpy, &name, &list, &n) >= Success | ||||
| 		&& n > 0 && *list) | ||||
| 		{ | ||||
| 			strncpy(text, *list, size - 1); | ||||
| 			XFreeStringList(list); | ||||
| 		} | ||||
| 	} | ||||
| 	text[size - 1] = '\0'; | ||||
| 	XFree(name.value); | ||||
| 	return True; | ||||
| } | ||||
| 
 | ||||
| void | ||||
| quit(const char *arg) { | ||||
| 	readin = running = False; | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue