dwm

my fork of dwm
Index Commits Files Refs README LICENSE
commit d6a6eca71d760fb3b61e35b187b9b9fd51092c71
parent 39ffc18635686b1a65cd80d19828c4fe2aed982f
Author: Anselm R. Garbe <arg@10kloc.org>
Date:   Wed, 23 Aug 2006 12:08:37 +0200

implemented class:inst:title matching
Diffstat:
Mconfig.arg.h | 2+-
Mconfig.default.h | 6+++---
Mtag.c | 8++++----
3 files changed, 8 insertions(+), 8 deletions(-)
diff --git 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
@@ -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
@@ -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)) {