dwm-horizgrid-6.1.diff (2228B)
1 From 064e1d48631cd9b03f32b42d7be79677197ee42f Mon Sep 17 00:00:00 2001 2 From: Marshall Mason <marshallmason3@gmail.com> 3 Date: Mon, 9 Nov 2015 12:38:28 -0800 4 Subject: [PATCH] Added horizgrid function 5 6 --- 7 config.def.h | 2 ++ 8 horizgrid.c | 32 ++++++++++++++++++++++++++++++++ 9 2 files changed, 34 insertions(+) 10 create mode 100644 horizgrid.c 11 12 diff --git a/config.def.h b/config.def.h 13 index eaae8f3..c2ad519 100644 14 --- a/config.def.h 15 +++ b/config.def.h 16 @@ -36,11 +36,13 @@ static const float mfact = 0.55; /* factor of master area size [0.05..0.95] 17 static const int nmaster = 1; /* number of clients in master area */ 18 static const Bool resizehints = True; /* True means respect size hints in tiled resizals */ 19 20 +#include "horizgrid.c" 21 static const Layout layouts[] = { 22 /* symbol arrange function */ 23 { "[]=", tile }, /* first entry is default */ 24 { "><>", NULL }, /* no layout function means floating behavior */ 25 { "[M]", monocle }, 26 + { "###", horizgrid }, 27 }; 28 29 /* key definitions */ 30 diff --git a/horizgrid.c b/horizgrid.c 31 new file mode 100644 32 index 0000000..51ce0f8 33 --- /dev/null 34 +++ b/horizgrid.c 35 @@ -0,0 +1,32 @@ 36 +void 37 +horizgrid(Monitor *m) { 38 + Client *c; 39 + unsigned int n, i; 40 + int w = 0; 41 + int ntop, nbottom = 0; 42 + 43 + /* Count windows */ 44 + for(n = 0, c = nexttiled(m->clients); c; c = nexttiled(c->next), n++); 45 + 46 + if(n == 0) 47 + return; 48 + else if(n == 1) { /* Just fill the whole screen */ 49 + c = nexttiled(m->clients); 50 + resize(c, m->wx, m->wy, m->ww - (2*c->bw), m->wh - (2*c->bw), False); 51 + } else if(n == 2) { /* Split vertically */ 52 + w = m->ww / 2; 53 + c = nexttiled(m->clients); 54 + resize(c, m->wx, m->wy, w - (2*c->bw), m->wh - (2*c->bw), False); 55 + c = nexttiled(c->next); 56 + resize(c, m->wx + w, m->wy, w - (2*c->bw), m->wh - (2*c->bw), False); 57 + } else { 58 + ntop = n / 2; 59 + nbottom = n - ntop; 60 + for(i = 0, c = nexttiled(m->clients); c; c = nexttiled(c->next), i++) { 61 + if(i < ntop) 62 + resize(c, m->wx + i * m->ww / ntop, m->wy, m->ww / ntop - (2*c->bw), m->wh / 2 - (2*c->bw), False); 63 + else 64 + resize(c, m->wx + (i - ntop) * m->ww / nbottom, m->wy + m->wh / 2, m->ww / nbottom - (2*c->bw), m->wh / 2 - (2*c->bw), False); 65 + } 66 + } 67 +} 68 -- 69 2.1.4 70