diff options
-rw-r--r-- | .dir-locals.el | 5 | ||||
-rw-r--r-- | config.h | 28 | ||||
-rw-r--r-- | dwm-fibonacci-6.2.diff | 114 | ||||
-rw-r--r-- | fibonacci.c | 66 |
4 files changed, 202 insertions, 11 deletions
diff --git a/.dir-locals.el b/.dir-locals.el new file mode 100644 index 0000000..f4817b5 --- /dev/null +++ b/.dir-locals.el @@ -0,0 +1,5 @@ +;;; Directory Local Variables -*- no-byte-compile: t; -*- +;;; For more information see (info "(emacs) Directory Variables") + +((c-mode . ((clang-format-mode . nil) + (flycheck-mode . nil)))) @@ -37,7 +37,7 @@ static const char *colors[][3] = { }; /* tagging */ -static const char *tags[] = { "", "", "", "", "", "𝅘𝅥𝅮", "7", "8", "9" }; +static const char *tags[] = { "", "", "", "", "✏", "6", "7", "8", "9" }; /* Custom functions */ static void togglegaps(const Arg *arg); @@ -49,16 +49,16 @@ static const Rule rules[] = { * WM_NAME(STRING) = title */ /* class instance title tags mask isfloating monitor */ - { "Gimp", NULL, NULL, 0, 1, -1 }, - { "Onboard", NULL, NULL, 0, 1, -1 }, - { "qutebrowser", NULL, NULL, GTMask(2), 0, -1 }, - { "firefox", NULL, NULL, GTMask(2), 0, -1 }, - { "Chromium", NULL, NULL, GTMask(2), 0, -1 }, - { "mpv", NULL, NULL, GTMask(3), 0, -1 }, - { "media-term", NULL, NULL, GTMask(3), 0, -1 }, - { "Spotify", NULL, NULL, GTMask(3), 0, -1 }, - { "Zathura", NULL, NULL, GTMask(4), 0, -1 }, - { "Xournalpp", NULL, NULL, GTMask(5), 0, -1 }, + { "Gimp", NULL, NULL, 0, 1, -1 }, + { "Onboard", NULL, NULL, 0, 1, -1 }, + { "qutebrowser", NULL, NULL, GTMask(2), 0, -1 }, + { "firefox", NULL, NULL, GTMask(2), 0, -1 }, + { "Chromium", NULL, NULL, GTMask(2), 0, -1 }, + { "mpv", NULL, NULL, GTMask(3), 0, -1 }, + { "media-term", NULL, NULL, GTMask(3), 0, -1 }, + { "Spotify", NULL, NULL, GTMask(3), 0, -1 }, + { "Zathura", NULL, NULL, GTMask(4), 0, -1 }, + { "Xournalpp", NULL, NULL, GTMask(5), 0, -1 }, }; /* layout(s) */ @@ -66,6 +66,8 @@ static const float mfact = 0.55; /* factor of master area size [0.05..0.9 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 */ { "[T]=", tile }, /* first entry is default */ @@ -73,6 +75,8 @@ static const Layout layouts[] = { { "{M}", monocle }, { "|M|", centeredmaster }, { ">M>", centeredfloatingmaster }, + { "[@]", spiral }, + { "[\\]", dwindle }, }; /* key definitions */ @@ -116,6 +120,8 @@ static Key keys[] = { { MODKEY|ShiftMask, XK_m, setlayout, {.v = &layouts[2]} }, //monocle { MODKEY|ShiftMask, XK_u, setlayout, {.v = &layouts[3]} }, //cmonocle { MODKEY|ShiftMask, XK_o, setlayout, {.v = &layouts[4]} }, //cfmonocle + { MODKEY|ShiftMask, XK_s, setlayout, {.v = &layouts[5]} }, //fib-spiral + { MODKEY|ShiftMask, XK_d, setlayout, {.v = &layouts[6]} }, //fib-spiral { MODKEY|ShiftMask, XK_space, setlayout, {0} }, { MODKEY, XK_space, togglefloating, {0} }, { MODKEY, XK_m, focusmon, {.i = -1 } }, diff --git a/dwm-fibonacci-6.2.diff b/dwm-fibonacci-6.2.diff new file mode 100644 index 0000000..81bba7a --- /dev/null +++ b/dwm-fibonacci-6.2.diff @@ -0,0 +1,114 @@ +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 + diff --git a/fibonacci.c b/fibonacci.c new file mode 100644 index 0000000..32cb89b --- /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); +} |