diff options
Diffstat (limited to 'dwm/patches/dwm-fibonacci-5.8.2.diff')
-rw-r--r-- | dwm/patches/dwm-fibonacci-5.8.2.diff | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/dwm/patches/dwm-fibonacci-5.8.2.diff b/dwm/patches/dwm-fibonacci-5.8.2.diff new file mode 100644 index 0000000..78664c8 --- /dev/null +++ b/dwm/patches/dwm-fibonacci-5.8.2.diff @@ -0,0 +1,85 @@ +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); ++} |