summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorbakkeby <[email protected]>2019-09-07 22:42:01 +0200
committerbakkeby <[email protected]>2019-09-07 22:42:01 +0200
commit7c23a59c38d01a0fae1edf360b4553fe3a0d9e23 (patch)
tree6e4b78fccba8ceb26e9a5c5534acc0d674afa84b
parent2f4916a64eeed1b8b6dc74b8dd728b27cca53a09 (diff)
downloaddwm-flexipatch-7c23a59c38d01a0fae1edf360b4553fe3a0d9e23.tar.gz
dwm-flexipatch-7c23a59c38d01a0fae1edf360b4553fe3a0d9e23.zip
Adding rotatestack patch
-rw-r--r--README.md5
-rw-r--r--config.def.h4
-rw-r--r--patch/include.c4
-rw-r--r--patch/include.h6
-rw-r--r--patch/rotatestack.c52
-rw-r--r--patch/rotatestack.h3
-rw-r--r--patches.h5
7 files changed, 77 insertions, 2 deletions
diff --git a/README.md b/README.md
index c6d5b97..4bbdeea 100644
--- a/README.md
+++ b/README.md
@@ -11,7 +11,7 @@ Refer to [https://dwm.suckless.org/](https://dwm.suckless.org/) for details on t
### Changelog:
-2019-09-07 - Added cyclelayouts patch
+2019-09-07 - Added cyclelayouts, resizecorners and rotatestack patch
2019-09-06 - Added attachabove, attachaside, attachbelow, attachbottom, autostart, fancybar, focusonnetactive and losefullscreen patches
@@ -59,6 +59,9 @@ Refer to [https://dwm.suckless.org/](https://dwm.suckless.org/) for details on t
- by default, windows only resize from the bottom right corner
- with this patch the mouse is warped to the nearest corner and you resize from there
+ - [rotatestack](https://dwm.suckless.org/patches/rotatestack/)
+ - let's you rotate through the stack using keyboard shortcuts
+
- [systray](https://dwm.suckless.org/patches/systray/)
- adds system tray in the status bar
diff --git a/config.def.h b/config.def.h
index 170f1db..1514554 100644
--- a/config.def.h
+++ b/config.def.h
@@ -84,6 +84,10 @@ static Key keys[] = {
{ MODKEY, XK_b, togglebar, {0} },
{ MODKEY, XK_j, focusstack, {.i = +1 } },
{ MODKEY, XK_k, focusstack, {.i = -1 } },
+ #if ROTATESTACK_PATCH
+ { MODKEY|ShiftMask, XK_j, rotatestack, {.i = +1 } },
+ { MODKEY|ShiftMask, XK_k, rotatestack, {.i = -1 } },
+ #endif // ROTATESTACK_PATCH
{ MODKEY, XK_i, incnmaster, {.i = +1 } },
{ MODKEY, XK_d, incnmaster, {.i = -1 } },
{ MODKEY, XK_h, setmfact, {.f = -0.05} },
diff --git a/patch/include.c b/patch/include.c
index 0c59c0f..b5cf100 100644
--- a/patch/include.c
+++ b/patch/include.c
@@ -18,6 +18,10 @@
#include "pertag.c"
#endif
+#if ROTATESTACK_PATCH
+#include "rotatestack.c"
+#endif
+
#if SYSTRAY_PATCH
#include "systray.c"
#endif
diff --git a/patch/include.h b/patch/include.h
index 17d6c9e..e324b55 100644
--- a/patch/include.h
+++ b/patch/include.h
@@ -12,7 +12,11 @@
#if CYCLELAYOUTS_PATCH
#include "cyclelayouts.h"
-#endif // CYCLELAYOUTS_PATCH
+#endif
+
+#if ROTATESTACK_PATCH
+#include "rotatestack.h"
+#endif
#if SYSTRAY_PATCH
#include "systray.h"
diff --git a/patch/rotatestack.c b/patch/rotatestack.c
new file mode 100644
index 0000000..d2f7d50
--- /dev/null
+++ b/patch/rotatestack.c
@@ -0,0 +1,52 @@
+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
+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);
+ focus(f);
+ restack(selmon);
+ }
+} \ No newline at end of file
diff --git a/patch/rotatestack.h b/patch/rotatestack.h
new file mode 100644
index 0000000..c0661fa
--- /dev/null
+++ b/patch/rotatestack.h
@@ -0,0 +1,3 @@
+static void enqueue(Client *c);
+static void enqueuestack(Client *c);
+static void rotatestack(const Arg *arg); \ No newline at end of file
diff --git a/patches.h b/patches.h
index 7d1fc5d..ece7226 100644
--- a/patches.h
+++ b/patches.h
@@ -87,6 +87,11 @@
*/
#define RESIZECORNERS_PATCH 0
+/* This patch let's you rotate through the stack using keyboard shortcuts.
+ * https://dwm.suckless.org/patches/rotatestack/
+ */
+#define ROTATESTACK_PATCH 0
+
/* The systray patch adds systray for the status bar.
* https://dwm.suckless.org/patches/systray/
*/