implemented reapply for re-applying the tagging rules during runtime, Mod-r
authorAnselm R. Garbe <garbeam@gmail.com>
Sat, 08 Dec 2007 20:11:56 +0100
changeset 1070 dc37f0e022f7
parent 1069 b61ffb85f691
child 1071 3303e2643918
implemented reapply for re-applying the tagging rules during runtime, Mod-r
config.def.h
dwm.1
dwm.c
--- a/config.def.h	Sat Dec 08 19:59:51 2007 +0100
+++ b/config.def.h	Sat Dec 08 20:11:56 2007 +0100
@@ -47,6 +47,7 @@
 	{ 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 },
--- a/dwm.1	Sat Dec 08 19:59:51 2007 +0100
+++ b/dwm.1	Sat Dec 08 20:11:56 2007 +0100
@@ -80,6 +80,9 @@
 .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
--- a/dwm.c	Sat Dec 08 19:59:51 2007 +0100
+++ b/dwm.c	Sat Dec 08 20:11:56 2007 +0100
@@ -161,6 +161,7 @@
 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 @@
 	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) {