dwm-horizgrid-6.1.diff - sites - public wiki contents of suckless.org
(HTM) git clone git://git.suckless.org/sites
(DIR) Log
(DIR) Files
(DIR) Refs
---
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