dwm

Kris's build of dwm
git clone git clone https://git.krisyotam.com/krisyotam/dwm.git
Log | Files | Refs | README | LICENSE

sizehints_ruled.c (1045B)


      1 void
      2 checkfloatingrules(Client *c)
      3 {
      4 	const char *class, *instance;
      5 	Atom wintype;
      6 	#if WINDOWROLERULE_PATCH
      7 	char role[64];
      8 	#endif // WINDOWROLERULE_PATCH
      9 	unsigned int i;
     10 	const Rule *r;
     11 	XClassHint ch = { NULL, NULL };
     12 
     13 	XGetClassHint(dpy, c->win, &ch);
     14 	class    = ch.res_class ? ch.res_class : broken;
     15 	instance = ch.res_name  ? ch.res_name  : broken;
     16 	wintype  = getatomprop(c, netatom[NetWMWindowType], XA_ATOM);
     17 	#if WINDOWROLERULE_PATCH
     18 	gettextprop(c->win, wmatom[WMWindowRole], role, sizeof(role));
     19 	#endif // WINDOWROLERULE_PATCH
     20 
     21 	for (i = 0; i < LENGTH(rules); i++) {
     22 		r = &rules[i];
     23 		if ((!r->title || strstr(c->name, r->title))
     24 		&& (!r->class || strstr(class, r->class))
     25 		#if WINDOWROLERULE_PATCH
     26 		&& (!r->role || strstr(role, r->role))
     27 		#endif // WINDOWROLERULE_PATCH
     28 		&& (!r->instance || strstr(instance, r->instance))
     29 		&& (!r->wintype || wintype == XInternAtom(dpy, r->wintype, False)))
     30 		{
     31 			c->isfloating = r->isfloating;
     32 		}
     33 	}
     34 	if (ch.res_class)
     35 		XFree(ch.res_class);
     36 	if (ch.res_name)
     37 		XFree(ch.res_name);
     38 }
     39