From: Anselm R. Garbe Date: Wed, 23 Aug 2006 10:08:37 +0000 (+0200) Subject: implemented class:inst:title matching X-Git-Url: https://git.danieliu.xyz/?a=commitdiff_plain;ds=sidebyside;h=d6a6eca71d760fb3b61e35b187b9b9fd51092c71;hp=39ffc18635686b1a65cd80d19828c4fe2aed982f;p=dwm.git implemented class:inst:title matching --- diff --git a/config.arg.h b/config.arg.h index d346856..70c245f 100644 --- a/config.arg.h +++ b/config.arg.h @@ -46,7 +46,7 @@ static Key key[] = { \ #define RULES \ static Rule rule[] = { \ - /* class:instance regex tags regex isfloat */ \ + /* class:instance:title regex tags regex isfloat */ \ { "Firefox.*", "net", False }, \ { "Gimp.*", NULL, True}, \ { "MPlayer.*", NULL, True}, \ diff --git a/config.default.h b/config.default.h index 453da71..c0102b0 100644 --- a/config.default.h +++ b/config.default.h @@ -47,11 +47,11 @@ static Key key[] = { \ { MODKEY|ShiftMask, XK_q, quit, { 0 } }, \ }; -/* Query class:instance for regex matching info with following command: - * xprop | awk -F'"' '/^WM_CLASS/ { printf "%s:%s\n", $4, $2 }'*/ +/* Query class:instance:title for regex matching info with following command: + * xprop | awk -F '"' '/^WM_CLASS/ { printf("%s:%s:",$4,$2) }; /^WM_NAME/{ printf("%s\n",$2) }' */ #define RULES \ static Rule rule[] = { \ - /* class:instance regex tags regex isfloat */ \ + /* class:instance:title regex tags regex isfloat */ \ { "Firefox.*", "2", False }, \ { "Gimp.*", NULL, True}, \ }; diff --git a/tag.c b/tag.c index bc36f08..512f355 100644 --- a/tag.c +++ b/tag.c @@ -78,18 +78,18 @@ initrregs() void settags(Client *c) { - char classinst[256]; + char prop[512]; unsigned int i, j; regmatch_t tmp; Bool matched = False; XClassHint ch; if(XGetClassHint(dpy, c->win, &ch)) { - snprintf(classinst, sizeof(classinst), "%s:%s", + snprintf(prop, sizeof(prop), "%s:%s:%s", ch.res_class ? ch.res_class : "", - ch.res_name ? ch.res_name : ""); + ch.res_name ? ch.res_name : "", c->name); for(i = 0; !matched && i < len; i++) - if(rreg[i].clregex && !regexec(rreg[i].clregex, classinst, 1, &tmp, 0)) { + if(rreg[i].clregex && !regexec(rreg[i].clregex, prop, 1, &tmp, 0)) { c->isfloat = rule[i].isfloat; for(j = 0; rreg[i].tregex && j < ntags; j++) { if(!regexec(rreg[i].tregex, tags[j], 1, &tmp, 0)) {