123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115 |
- From ec9f55b6005cfa3b025b3d700c61af3ce539d057 Mon Sep 17 00:00:00 2001
- From: Niki Yoshiuchi <nyoshiuchi@gmail.com>
- Date: Sat, 18 Apr 2020 09:55:26 -0700
- Subject: [PATCH] Adding the fibonacci layout patch
- ---
- config.def.h | 5 ++++
- fibonacci.c | 66 ++++++++++++++++++++++++++++++++++++++++++++++++++++
- 2 files changed, 71 insertions(+)
- create mode 100644 fibonacci.c
- diff --git a/config.def.h b/config.def.h
- index 1c0b587..5708487 100644
- --- a/config.def.h
- +++ b/config.def.h
- @@ -36,11 +36,14 @@ static const float mfact = 0.55; /* factor of master area size [0.05..0.95]
- static const int nmaster = 1; /* number of clients in master area */
- static const int resizehints = 1; /* 1 means respect size hints in tiled resizals */
-
- +#include "fibonacci.c"
- static const Layout layouts[] = {
- /* symbol arrange function */
- { "[]=", tile }, /* first entry is default */
- { "><>", NULL }, /* no layout function means floating behavior */
- { "[M]", monocle },
- + { "[@]", spiral },
- + { "[\\]", dwindle },
- };
-
- /* key definitions */
- @@ -76,6 +79,8 @@ static Key keys[] = {
- { MODKEY, XK_t, setlayout, {.v = &layouts[0]} },
- { MODKEY, XK_f, setlayout, {.v = &layouts[1]} },
- { MODKEY, XK_m, setlayout, {.v = &layouts[2]} },
- + { MODKEY, XK_r, setlayout, {.v = &layouts[3]} },
- + { MODKEY|ShiftMask, XK_r, setlayout, {.v = &layouts[4]} },
- { MODKEY, XK_space, setlayout, {0} },
- { MODKEY|ShiftMask, XK_space, togglefloating, {0} },
- { MODKEY, XK_0, view, {.ui = ~0 } },
- 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);
- +}
- --
- 2.20.1
|