summaryrefslogtreecommitdiff
path: root/patch/transferall.c
diff options
context:
space:
mode:
Diffstat (limited to 'patch/transferall.c')
-rw-r--r--patch/transferall.c26
1 files changed, 26 insertions, 0 deletions
diff --git a/patch/transferall.c b/patch/transferall.c
new file mode 100644
index 0000000..ee823b1
--- /dev/null
+++ b/patch/transferall.c
@@ -0,0 +1,26 @@
+void
+transferall(const Arg *arg)
+{
+ Client *c, *n = selmon->clients, *attachfrom = NULL;
+ int i = 0, nstackclients = 0;
+ while (n) {
+ c = n;
+ n = c->next;
+ if (!ISVISIBLE(c) || c->isfloating) continue;
+ if (i >= selmon->nmaster) {
+ detach(c);
+ if (!attachfrom) {
+ attach(c);
+ } else {
+ c->next = attachfrom->next;
+ attachfrom->next = c;
+ }
+ attachfrom = c;
+ nstackclients++;
+ }
+ i++;
+ }
+ selmon->nmaster = nstackclients;
+ arrange(selmon);
+}
+