|  |  | @ -267,7 +267,6 @@ static void (*handler[LASTEvent]) (XEvent *) = { | 
			
		
	
		
			
				
					|  |  |  | [UnmapNotify] = unmapnotify | 
			
		
	
		
			
				
					|  |  |  | }; | 
			
		
	
		
			
				
					|  |  |  | static Atom wmatom[WMLast], netatom[NetLast]; | 
			
		
	
		
			
				
					|  |  |  | static Bool otherwm; | 
			
		
	
		
			
				
					|  |  |  | static Bool running = True; | 
			
		
	
		
			
				
					|  |  |  | static Cursor cursor[CurLast]; | 
			
		
	
		
			
				
					|  |  |  | static Display *dpy; | 
			
		
	
	
		
			
				
					|  |  | @ -458,13 +457,10 @@ buttonpress(XEvent *e) { | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
		
			
				
					|  |  |  | void | 
			
		
	
		
			
				
					|  |  |  | checkotherwm(void) { | 
			
		
	
		
			
				
					|  |  |  | otherwm = False; | 
			
		
	
		
			
				
					|  |  |  | xerrorxlib = XSetErrorHandler(xerrorstart); | 
			
		
	
		
			
				
					|  |  |  | /* this causes an error if some other window manager is running */ | 
			
		
	
		
			
				
					|  |  |  | XSelectInput(dpy, DefaultRootWindow(dpy), SubstructureRedirectMask); | 
			
		
	
		
			
				
					|  |  |  | XSync(dpy, False); | 
			
		
	
		
			
				
					|  |  |  | if(otherwm) | 
			
		
	
		
			
				
					|  |  |  | die("dwm: another window manager is already running\n"); | 
			
		
	
		
			
				
					|  |  |  | XSetErrorHandler(xerror); | 
			
		
	
		
			
				
					|  |  |  | XSync(dpy, False); | 
			
		
	
		
			
				
					|  |  |  | } | 
			
		
	
	
		
			
				
					|  |  | @ -994,12 +990,11 @@ initfont(const char *fontstr) { | 
			
		
	
		
			
				
					|  |  |  | XFreeStringList(missing); | 
			
		
	
		
			
				
					|  |  |  | } | 
			
		
	
		
			
				
					|  |  |  | if(dc.font.set) { | 
			
		
	
		
			
				
					|  |  |  | XFontSetExtents *font_extents; | 
			
		
	
		
			
				
					|  |  |  | XFontStruct **xfonts; | 
			
		
	
		
			
				
					|  |  |  | char **font_names; | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
		
			
				
					|  |  |  | dc.font.ascent = dc.font.descent = 0; | 
			
		
	
		
			
				
					|  |  |  | font_extents = XExtentsOfFontSet(dc.font.set); | 
			
		
	
		
			
				
					|  |  |  | XExtentsOfFontSet(dc.font.set); | 
			
		
	
		
			
				
					|  |  |  | n = XFontsOfFontSet(dc.font.set, &xfonts, &font_names); | 
			
		
	
		
			
				
					|  |  |  | for(i = 0, dc.font.ascent = 0, dc.font.descent = 0; i < n; i++) { | 
			
		
	
		
			
				
					|  |  |  | dc.font.ascent = MAX(dc.font.ascent, (*xfonts)->ascent); | 
			
		
	
	
		
			
				
					|  |  | @ -1088,14 +1083,12 @@ killclient(const Arg *arg) { | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
		
			
				
					|  |  |  | void | 
			
		
	
		
			
				
					|  |  |  | manage(Window w, XWindowAttributes *wa) { | 
			
		
	
		
			
				
					|  |  |  | static Client cz; | 
			
		
	
		
			
				
					|  |  |  | Client *c, *t = NULL; | 
			
		
	
		
			
				
					|  |  |  | Window trans = None; | 
			
		
	
		
			
				
					|  |  |  | XWindowChanges wc; | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
		
			
				
					|  |  |  | if(!(c = malloc(sizeof(Client)))) | 
			
		
	
		
			
				
					|  |  |  | if(!(c = calloc(1, sizeof(Client)))) | 
			
		
	
		
			
				
					|  |  |  | die("fatal: could not malloc() %u bytes\n", sizeof(Client)); | 
			
		
	
		
			
				
					|  |  |  | *c = cz; | 
			
		
	
		
			
				
					|  |  |  | c->win = w; | 
			
		
	
		
			
				
					|  |  |  | updatetitle(c); | 
			
		
	
		
			
				
					|  |  |  | if(XGetTransientForHint(dpy, w, &trans) && (t = wintoclient(trans))) { | 
			
		
	
	
		
			
				
					|  |  | @ -1579,7 +1572,6 @@ showhide(Client *c) { | 
			
		
	
		
			
				
					|  |  |  | } | 
			
		
	
		
			
				
					|  |  |  | } | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
		
			
				
					|  |  |  | void | 
			
		
	
		
			
				
					|  |  |  | sigchld(int unused) { | 
			
		
	
		
			
				
					|  |  |  | if(signal(SIGCHLD, sigchld) == SIG_ERR) | 
			
		
	
	
		
			
				
					|  |  | @ -2015,7 +2007,7 @@ xerrordummy(Display *dpy, XErrorEvent *ee) { | 
			
		
	
		
			
				
					|  |  |  | * is already running. */ | 
			
		
	
		
			
				
					|  |  |  | int | 
			
		
	
		
			
				
					|  |  |  | xerrorstart(Display *dpy, XErrorEvent *ee) { | 
			
		
	
		
			
				
					|  |  |  | otherwm = True; | 
			
		
	
		
			
				
					|  |  |  | die("dwm: another window manager is already running\n"); | 
			
		
	
		
			
				
					|  |  |  | return -1; | 
			
		
	
		
			
				
					|  |  |  | } | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
	
		
			
				
					|  |  | 
 |