commit 64ec7dc4002bd3fcd25eeefd7bdc72f1b1ac7803
Author: ssd <[email protected]>
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
@@ -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
+@@ -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
+@@ -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);
+@@ -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);
+@@ -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;
+@@ -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
@@ -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
+------
+* [email protected]


Reply via email to