|  | @@ -61,7 +61,7 @@
 | 
	
		
			
				|  |  |  enum { CurNormal, CurResize, CurMove, CurLast };        /* cursor */
 | 
	
		
			
				|  |  |  enum { ColBorder, ColFG, ColBG, ColLast };              /* color */
 | 
	
		
			
				|  |  |  enum { NetSupported, NetWMName, NetLast };              /* EWMH atoms */
 | 
	
		
			
				|  |  | -enum { WMProtocols, WMDelete, WMName, WMState, WMLast };/* default atoms */
 | 
	
		
			
				|  |  | +enum { WMProtocols, WMDelete, WMState, WMLast };        /* default atoms */
 | 
	
		
			
				|  |  |  enum { ClkTagBar, ClkLtSymbol, ClkStatusText, ClkWinTitle,
 | 
	
		
			
				|  |  |         ClkClientWin, ClkRootWin, ClkLast };             /* clicks */
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -233,7 +233,7 @@ static Client *sel = NULL;
 | 
	
		
			
				|  |  |  static Client *stack = NULL;
 | 
	
		
			
				|  |  |  static Cursor cursor[CurLast];
 | 
	
		
			
				|  |  |  static Display *dpy;
 | 
	
		
			
				|  |  | -static DC dc = {0};
 | 
	
		
			
				|  |  | +static DC dc;
 | 
	
		
			
				|  |  |  static Layout *lt[] = { NULL, NULL };
 | 
	
		
			
				|  |  |  static Window root, barwin;
 | 
	
		
			
				|  |  |  /* configuration, allows nested code to access above variables */
 | 
	
	
		
			
				|  | @@ -250,20 +250,21 @@ applyrules(Client *c) {
 | 
	
		
			
				|  |  |  	XClassHint ch = { 0 };
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	/* rule matching */
 | 
	
		
			
				|  |  | -	XGetClassHint(dpy, c->win, &ch);
 | 
	
		
			
				|  |  | -	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)))) {
 | 
	
		
			
				|  |  | -			c->isfloating = r->isfloating;
 | 
	
		
			
				|  |  | -			c->tags |= r->tags & TAGMASK;
 | 
	
		
			
				|  |  | +	if(XGetClassHint(dpy, c->win, &ch)) {
 | 
	
		
			
				|  |  | +		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)))) {
 | 
	
		
			
				|  |  | +				c->isfloating = r->isfloating;
 | 
	
		
			
				|  |  | +				c->tags |= r->tags & TAGMASK;
 | 
	
		
			
				|  |  | +			}
 | 
	
		
			
				|  |  |  		}
 | 
	
		
			
				|  |  | +		if(ch.res_class)
 | 
	
		
			
				|  |  | +			XFree(ch.res_class);
 | 
	
		
			
				|  |  | +		if(ch.res_name)
 | 
	
		
			
				|  |  | +			XFree(ch.res_name);
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  | -	if(ch.res_class)
 | 
	
		
			
				|  |  | -		XFree(ch.res_class);
 | 
	
		
			
				|  |  | -	if(ch.res_name)
 | 
	
		
			
				|  |  | -		XFree(ch.res_name);
 | 
	
		
			
				|  |  |  	if(!c->tags)
 | 
	
		
			
				|  |  |  		c->tags = tagset[seltags];
 | 
	
		
			
				|  |  |  }
 | 
	
	
		
			
				|  | @@ -796,9 +797,6 @@ initfont(const char *fontstr) {
 | 
	
		
			
				|  |  |  		}
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  |  	else {
 | 
	
		
			
				|  |  | -		if(dc.font.xfont)
 | 
	
		
			
				|  |  | -			XFreeFont(dpy, dc.font.xfont);
 | 
	
		
			
				|  |  | -		dc.font.xfont = NULL;
 | 
	
		
			
				|  |  |  		if(!(dc.font.xfont = XLoadQueryFont(dpy, fontstr))
 | 
	
		
			
				|  |  |  		&& !(dc.font.xfont = XLoadQueryFont(dpy, "fixed")))
 | 
	
		
			
				|  |  |  			die("error, cannot load font: '%s'\n", fontstr);
 | 
	
	
		
			
				|  | @@ -1326,7 +1324,6 @@ setup(void) {
 | 
	
		
			
				|  |  |  	/* init atoms */
 | 
	
		
			
				|  |  |  	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);
 | 
	
	
		
			
				|  | @@ -1634,7 +1631,7 @@ updatesizehints(Client *c) {
 | 
	
		
			
				|  |  |  void
 | 
	
		
			
				|  |  |  updatetitle(Client *c) {
 | 
	
		
			
				|  |  |  	if(!gettextprop(c->win, netatom[NetWMName], c->name, sizeof c->name))
 | 
	
		
			
				|  |  | -		gettextprop(c->win, wmatom[WMName], c->name, sizeof c->name);
 | 
	
		
			
				|  |  | +		gettextprop(c->win, XA_WM_NAME, c->name, sizeof c->name);
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  void
 |