dwm

my fork of dwm
Index Commits Files Refs README LICENSE
commit d66ad1457e6b1e3fc18c01767fdb499acaef3c8e
parent 8497f9f78195d386c7b50bc5105641a5c3f78554
Author: Anselm R. Garbe <garbeam@gmail.com>
Date:   Sat,  8 Dec 2007 20:11:56 +0100

implemented reapply for re-applying the tagging rules during runtime, Mod-r
Diffstat:
Mconfig.def.h | 1+
Mdwm.1 | 3+++
Mdwm.c | 12++++++++++++
3 files changed, 16 insertions(+), 0 deletions(-)
diff --git a/config.def.h b/config.def.h
@@ -47,6 +47,7 @@ Key keys[] = {
     { MODKEY,            XK_h,        setmwfact,    "-0.05" },
     { MODKEY,            XK_l,        setmwfact,    "+0.05" },
     { MODKEY,            XK_m,        togglemax,    NULL },
+    { MODKEY,            XK_r,        reapply,    NULL },
     { MODKEY,            XK_Return,    zoom,        NULL },
     { MODKEY,            XK_Tab,        viewprevtag,    NULL },
     { MODKEY|ShiftMask,        XK_space,    togglefloating,    NULL },
diff --git a/dwm.1 b/dwm.1
@@ -80,6 +80,9 @@ Increases the master area width about 5% (tiled layout only).
 .B Mod1\-m
 Toggles maximization of current window.
 .TP
+.B Mod1\-r
+Re-applies tagging rules to all windows.
+.TP
 .B Mod1\-Shift\-[1..n]
 Apply
 .RB nth
diff --git a/dwm.c b/dwm.c
@@ -161,6 +161,7 @@ void movemouse(Client *c);
 Client *nexttiled(Client *c);
 void propertynotify(XEvent *e);
 void quit(const char *arg);
+void reapply(const char *arg);
 void resize(Client *c, int x, int y, int w, int h, Bool sizehints);
 void resizemouse(Client *c);
 void restack(void);
@@ -1159,6 +1160,17 @@ quit(const char *arg) {
     readin = running = False;
 }
 
+void
+reapply(const char *arg) {
+    static Bool zerotags[LENGTH(tags)] = { 0 };
+    Client *c;
+
+    for(c = clients; c; c = c->next) {
+        memcpy(c->tags, zerotags, sizeof zerotags);
+        applyrules(c);
+    }
+    arrange();
+}
 
 void
 resize(Client *c, int x, int y, int w, int h, Bool sizehints) {