|
|
- 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);
- +}
|