implemented class:inst:title matching
authorAnselm R. Garbe <arg@10kloc.org>
Wed, 23 Aug 2006 10:08:37 +0000 (12:08 +0200)
committerAnselm R. Garbe <arg@10kloc.org>
Wed, 23 Aug 2006 10:08:37 +0000 (12:08 +0200)
config.arg.h
config.default.h
tag.c

index d346856..70c245f 100644 (file)
@@ -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}, \
index 453da71..c0102b0 100644 (file)
@@ -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 (file)
--- 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)) {