[wiki] [sites] add rotatestack patch || ssd
commit 64ec7dc4002bd3fcd25eeefd7bdc72f1b1ac7803
Author: ssd <ssd_AT_mailless.org>
Date: Sun Oct 23 14:39:42 2016 +0200
add rotatestack patch
diff --git a/dwm.suckless.org/patches/dwm-rotatestack-20161021-ab9571b.diff b/dwm.suckless.org/patches/dwm-rotatestack-20161021-ab9571b.diff
new file mode 100644
index 0000000..ed74c6d
--- /dev/null
+++ b/dwm.suckless.org/patches/dwm-rotatestack-20161021-ab9571b.diff
_AT_@ -0,0 +1,102 @@
+diff --git a/config.def.h b/config.def.h
+index fd77a07..09737d7 100644
+--- a/config.def.h
++++ b/config.def.h
+_AT_@ -64,6 +64,8 @@ static Key keys[] = {
+ { MODKEY, XK_p, spawn, {.v = dmenucmd } },
+ { MODKEY|ShiftMask, XK_Return, spawn, {.v = termcmd } },
+ { MODKEY, XK_b, togglebar, {0} },
++ { MODKEY|ShiftMask, XK_j, rotatestack, {.i = +1 } },
++ { MODKEY|ShiftMask, XK_k, rotatestack, {.i = -1 } },
+ { MODKEY, XK_j, focusstack, {.i = +1 } },
+ { MODKEY, XK_k, focusstack, {.i = -1 } },
+ { MODKEY, XK_i, incnmaster, {.i = +1 } },
+diff --git a/dwm.c b/dwm.c
+index 421bf27..1ec8b10 100644
+--- a/dwm.c
++++ b/dwm.c
+_AT_@ -165,6 +165,8 @@ static void detachstack(Client *c);
+ static Monitor *dirtomon(int dir);
+ static void drawbar(Monitor *m);
+ static void drawbars(void);
++static void enqueue(Client *c);
++static void enqueuestack(Client *c);
+ static void enternotify(XEvent *e);
+ static void expose(XEvent *e);
+ static void focus(Client *c);
+_AT_@ -194,6 +196,7 @@ static void resize(Client *c, int x, int y, int w, int h, int interact);
+ static void resizeclient(Client *c, int x, int y, int w, int h);
+ static void resizemouse(const Arg *arg);
+ static void restack(Monitor *m);
++static void rotatestack(const Arg *arg);
+ static void run(void);
+ static void scan(void);
+ static int sendevent(Client *c, Atom proto);
+_AT_@ -765,6 +768,28 @@ drawbars(void)
+ }
+
+ void
++enqueue(Client *c)
++{
++ Client *l;
++ for (l = c->mon->clients; l && l->next; l = l->next);
++ if (l) {
++ l->next = c;
++ c->next = NULL;
++ }
++}
++
++void
++enqueuestack(Client *c)
++{
++ Client *l;
++ for (l = c->mon->stack; l && l->snext; l = l->snext);
++ if (l) {
++ l->snext = c;
++ c->snext = NULL;
++ }
++}
++
++void
+ enternotify(XEvent *e)
+ {
+ Client *c;
+_AT_@ -1390,6 +1415,38 @@ restack(Monitor *m)
+ }
+
+ void
++rotatestack(const Arg *arg)
++{
++ Client *c = NULL, *f;
++
++ if (!selmon->sel)
++ return;
++ f = selmon->sel;
++ if (arg->i > 0) {
++ for (c = nexttiled(selmon->clients); c && nexttiled(c->next); c = nexttiled(c->next));
++ if (c){
++ detach(c);
++ attach(c);
++ detachstack(c);
++ attachstack(c);
++ }
++ } else {
++ if ((c = nexttiled(selmon->clients))){
++ detach(c);
++ enqueue(c);
++ detachstack(c);
++ enqueuestack(c);
++ }
++ }
++ if (c){
++ arrange(selmon);
++ //unfocus(f, 1);
++ focus(f);
++ restack(selmon);
++ }
++}
++
++void
+ run(void)
+ {
+ XEvent ev;
diff --git a/dwm.suckless.org/patches/rotatestack.md b/dwm.suckless.org/patches/rotatestack.md
new file mode 100644
index 0000000..cc15da5
--- /dev/null
+++ b/dwm.suckless.org/patches/rotatestack.md
_AT_@ -0,0 +1,24 @@
+
+Rotate stack
+============
+
+Description
+-----------
+
+Stack rotation moves a client from the bottom to the top of the stack
+(or the other way round). This effectively rotates the clients by one
+position clockwise (or CCW, respectively).
+
+It should play well with arbitrary stack layouts and nmaster values.
+
+One may think of it as moving the zoom through the list of clients, very
+much in the same way as scrolling moves the view port around a pane.
+
+
+Download
+--------
+* [dwm-rotatestack-20161021-ab9571b.diff](dwm-rotatestack-20161021-ab9571b.diff)
+
+Author
+------
+* ssd_AT_mailless.org
Received on Sun Oct 23 2016 - 14:40:13 CEST
This archive was generated by hypermail 2.3.0
: Sun Oct 23 2016 - 14:48:17 CEST