86 lines
1.5 KiB
Diff
86 lines
1.5 KiB
Diff
|
diff --git a/config.def.h b/config.def.h
|
||
|
index cca37df..91b91aa 100644
|
||
|
--- a/config.def.h
|
||
|
+++ b/config.def.h
|
||
|
@@ -29,1 +29,2 @@
|
||
|
+#include "fibonacci.c"
|
||
|
static const Layout layouts[] = {
|
||
|
@@ -34,3 +35,5 @@
|
||
|
+ { "[@]", spiral },
|
||
|
+ { "[\\]", dwindle },
|
||
|
};
|
||
|
|
||
|
/* key definitions */
|
||
|
diff --git a/fibonacci.c b/fibonacci.c
|
||
|
new file mode 100644
|
||
|
index 0000000..fce0a57
|
||
|
--- /dev/null
|
||
|
+++ b/fibonacci.c
|
||
|
@@ -0,0 +1,66 @@
|
||
|
+void
|
||
|
+fibonacci(Monitor *mon, int s) {
|
||
|
+ unsigned int i, n, nx, ny, nw, nh;
|
||
|
+ Client *c;
|
||
|
+
|
||
|
+ for(n = 0, c = nexttiled(mon->clients); c; c = nexttiled(c->next), n++);
|
||
|
+ if(n == 0)
|
||
|
+ return;
|
||
|
+
|
||
|
+ nx = mon->wx;
|
||
|
+ ny = 0;
|
||
|
+ nw = mon->ww;
|
||
|
+ nh = mon->wh;
|
||
|
+
|
||
|
+ for(i = 0, c = nexttiled(mon->clients); c; c = nexttiled(c->next)) {
|
||
|
+ if((i % 2 && nh / 2 > 2 * c->bw)
|
||
|
+ || (!(i % 2) && nw / 2 > 2 * c->bw)) {
|
||
|
+ if(i < n - 1) {
|
||
|
+ if(i % 2)
|
||
|
+ nh /= 2;
|
||
|
+ else
|
||
|
+ nw /= 2;
|
||
|
+ if((i % 4) == 2 && !s)
|
||
|
+ nx += nw;
|
||
|
+ else if((i % 4) == 3 && !s)
|
||
|
+ ny += nh;
|
||
|
+ }
|
||
|
+ if((i % 4) == 0) {
|
||
|
+ if(s)
|
||
|
+ ny += nh;
|
||
|
+ else
|
||
|
+ ny -= nh;
|
||
|
+ }
|
||
|
+ else if((i % 4) == 1)
|
||
|
+ nx += nw;
|
||
|
+ else if((i % 4) == 2)
|
||
|
+ ny += nh;
|
||
|
+ else if((i % 4) == 3) {
|
||
|
+ if(s)
|
||
|
+ nx += nw;
|
||
|
+ else
|
||
|
+ nx -= nw;
|
||
|
+ }
|
||
|
+ if(i == 0)
|
||
|
+ {
|
||
|
+ if(n != 1)
|
||
|
+ nw = mon->ww * mon->mfact;
|
||
|
+ ny = mon->wy;
|
||
|
+ }
|
||
|
+ else if(i == 1)
|
||
|
+ nw = mon->ww - nw;
|
||
|
+ i++;
|
||
|
+ }
|
||
|
+ resize(c, nx, ny, nw - 2 * c->bw, nh - 2 * c->bw, False);
|
||
|
+ }
|
||
|
+}
|
||
|
+
|
||
|
+void
|
||
|
+dwindle(Monitor *mon) {
|
||
|
+ fibonacci(mon, 1);
|
||
|
+}
|
||
|
+
|
||
|
+void
|
||
|
+spiral(Monitor *mon) {
|
||
|
+ fibonacci(mon, 0);
|
||
|
+}
|