aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--config.def.h1
-rw-r--r--dwm.13
-rw-r--r--dwm.c12
3 files changed, 16 insertions, 0 deletions
diff --git a/config.def.h b/config.def.h
index 169aeec..d76bd0b 100644
--- 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
index ba6b3f4..aff7bed 100644
--- 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
index 53e5cb2..0af37d6 100644
--- 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) {
remember that computers suck.