summaryrefslogtreecommitdiff
path: root/patch/cyclelayouts.c
diff options
context:
space:
mode:
Diffstat (limited to 'patch/cyclelayouts.c')
-rw-r--r--patch/cyclelayouts.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/patch/cyclelayouts.c b/patch/cyclelayouts.c
new file mode 100644
index 0000000..81339bc
--- /dev/null
+++ b/patch/cyclelayouts.c
@@ -0,0 +1,18 @@
+void
+cyclelayout(const Arg *arg)
+{
+ Layout *l;
+ for (l = (Layout *)layouts; l != selmon->lt[selmon->sellt]; l++);
+ if (arg->i > 0) {
+ if (l->symbol && (l + 1)->symbol)
+ setlayout(&((Arg) { .v = (l + 1) }));
+ else
+ setlayout(&((Arg) { .v = layouts }));
+ } else {
+ if (l != layouts && (l - 1)->symbol)
+ setlayout(&((Arg) { .v = (l - 1) }));
+ else
+ setlayout(&((Arg) { .v = &layouts[LENGTH(layouts) - 2] }));
+ }
+}
+