On Tue, May 13, 2008 at 09:06:22PM -0700, Eric Davis wrote:
> DWM used to support regular expressions in the tags ref for client
> rules.  I agree that the feature was overkill but it was nice to be able
> to say "*" so a client is on all tags.  I used this for background
> notification popups from scripts with gxmessage.
> 
> Is it possible to add a simple glob indicator back to DWM that specifies
> all tags?  Or is there another way to do this that I overlooked...?

See attached patch, however I'm not sure I like this approach
for the mainstream dwm.

If you want the behavior it is possible with the following
approach already in mainstream dwm, but you might not like it:

{ NULL, "gxmessage", NULL, tags[0], True },
{ NULL, "gxmessage", NULL, tags[1], True },
{ NULL, "gxmessage", NULL, tags[2], True },
{ NULL, "gxmessage", NULL, tags[3], True },
        ...
{ NULL, "gxmessage", NULL, tags[8], True },

Kind regards,
-- 
 Anselm R. Garbe >< http://www.suckless.org/ >< GPG key: 0D73F361
diff -r 58a67fab8143 -r b9bb1d036bd0 dwm.c
--- a/dwm.c	Wed May 14 11:24:35 2008 +0100
+++ b/dwm.c	Thu May 15 10:47:26 2008 +0100
@@ -240,7 +240,7 @@ Window root, barwin;
 
 void
 applyrules(Client *c) {
-	unsigned int i;
+	unsigned int i, j;
 	Bool matched = False;
 	Rule *r;
 	XClassHint ch = { 0 };
@@ -254,7 +254,11 @@ applyrules(Client *c) {
 		&& (!r->instance || (ch.res_name && strstr(ch.res_name, r->instance)))) {
 			c->isfloating = r->isfloating;
 			if(r->tag) {
-				c->tags[idxoftag(r->tag)] = True;
+				if(r->tag[0] == '*' && r->tag[1] == 0)
+					for(j = 0; j < LENGTH(tags); i++)
+						c->tags[j] = True;
+				else
+					c->tags[idxoftag(r->tag)] = True;
 				matched = True;
 			}
 		}

Reply via email to