dwm-tatami-6.2.diff - sites - public wiki contents of suckless.org
(HTM) git clone git://git.suckless.org/sites
(DIR) Log
(DIR) Files
(DIR) Refs
---
dwm-tatami-6.2.diff (4391B)
---
1 diff -Naur dwm/config.def.h dwm-tatami/config.def.h
2 --- dwm/config.def.h 2020-09-24 02:14:27.545355268 -0500
3 +++ dwm-tatami/config.def.h 2020-09-24 02:46:12.041952267 -0500
4 @@ -34,13 +34,15 @@
5 /* layout(s) */
6 static const float mfact = 0.55; /* factor of master area size [0.05..0.95] */
7 static const int nmaster = 1; /* number of clients in master area */
8 -static const int resizehints = 1; /* 1 means respect size hints in tiled resizals */
9 +static const int resizehints = 0; /* 1 means respect size hints in tiled resizals */
10
11 +#include "tatami.c"
12 static const Layout layouts[] = {
13 /* symbol arrange function */
14 { "[]=", tile }, /* first entry is default */
15 { "><>", NULL }, /* no layout function means floating behavior */
16 { "[M]", monocle },
17 + { "|+|", tatami },
18 };
19
20 /* key definitions */
21 @@ -76,6 +78,7 @@
22 { MODKEY, XK_t, setlayout, {.v = &layouts[0]} },
23 { MODKEY, XK_f, setlayout, {.v = &layouts[1]} },
24 { MODKEY, XK_m, setlayout, {.v = &layouts[2]} },
25 + { MODKEY, XK_y, setlayout, {.v = &layouts[3]} },
26 { MODKEY, XK_space, setlayout, {0} },
27 { MODKEY|ShiftMask, XK_space, togglefloating, {0} },
28 { MODKEY, XK_0, view, {.ui = ~0 } },
29 diff -Naur dwm/tatami.c dwm-tatami/tatami.c
30 --- dwm/tatami.c 1969-12-31 18:00:00.000000000 -0600
31 +++ dwm-tatami/tatami.c 2020-09-24 02:17:14.335349175 -0500
32 @@ -0,0 +1,157 @@
33 +void
34 +tatami(Monitor *m) {
35 + unsigned int i, n, nx, ny, nw, nh,
36 + mats, tc,
37 + tnx, tny, tnw, tnh;
38 + Client *c;
39 +
40 + for(n = 0, c = nexttiled(m->clients); c; c = nexttiled(c->next), ++n);
41 + if(n == 0)
42 + return;
43 +
44 + nx = m->wx;
45 + ny = 0;
46 + nw = m->ww;
47 + nh = m->wh;
48 +
49 + c = nexttiled(m->clients);
50 +
51 + if(n != 1) nw = m->ww * m->mfact;
52 + ny = m->wy;
53 +
54 + resize(c, nx, ny, nw - 2 * c->bw, nh - 2 * c->bw, False);
55 +
56 + c = nexttiled(c->next);
57 +
58 + nx += nw;
59 + nw = m->ww - nw;
60 +
61 + if(n>1)
62 + {
63 +
64 + tc = n-1;
65 + mats = tc/5;
66 +
67 + nh/=(mats + (tc % 5 > 0));
68 +
69 + for(i = 0; c && (i < (tc % 5)); c = nexttiled(c->next))
70 + {
71 + tnw=nw;
72 + tnx=nx;
73 + tnh=nh;
74 + tny=ny;
75 + switch(tc - (mats*5))
76 + {
77 + case 1://fill
78 + break;
79 + case 2://up and down
80 + if((i % 5) == 0) //up
81 + tnh/=2;
82 + else if((i % 5) == 1) //down
83 + {
84 + tnh/=2;
85 + tny += nh/2;
86 + }
87 + break;
88 + case 3://bottom, up-left and up-right
89 + if((i % 5) == 0) //up-left
90 + {
91 + tnw = nw/2;
92 + tnh = (2*nh)/3;
93 + }
94 + else if((i % 5) == 1)//up-right
95 + {
96 + tnx += nw/2;
97 + tnw = nw/2;
98 + tnh = (2*nh)/3;
99 + }
100 + else if((i % 5) == 2)//bottom
101 + {
102 + tnh = nh/3;
103 + tny += (2*nh)/3;
104 + }
105 + break;
106 + case 4://bottom, left, right and top
107 + if((i % 5) == 0) //top
108 + {
109 + tnh = (nh)/4;
110 + }
111 + else if((i % 5) == 1)//left
112 + {
113 + tnw = nw/2;
114 + tny += nh/4;
115 + tnh = (nh)/2;
116 + }
117 + else if((i % 5) == 2)//right
118 + {
119 + tnx += nw/2;
120 + tnw = nw/2;
121 + tny += nh/4;
122 + tnh = (nh)/2;
123 + }
124 + else if((i % 5) == 3)//bottom
125 + {
126 + tny += (3*nh)/4;
127 + tnh = (nh)/4;
128 + }
129 + break;
130 + }
131 + ++i;
132 + resize(c, tnx, tny, tnw - 2 * c->bw, tnh - 2 * c->bw, False);
133 + }
134 +
135 + ++mats;
136 +
137 + for(i = 0; c && (mats>0); c = nexttiled(c->next)) {
138 +
139 + if((i%5)==0)
140 + {
141 + --mats;
142 + if(((tc % 5) > 0)||(i>=5))
143 + ny+=nh;
144 + }
145 +
146 + tnw=nw;
147 + tnx=nx;
148 + tnh=nh;
149 + tny=ny;
150 +
151 +
152 + switch(i % 5)
153 + {
154 + case 0: //top-left-vert
155 + tnw = (nw)/3;
156 + tnh = (nh*2)/3;
157 + break;
158 + case 1: //top-right-hor
159 + tnx += (nw)/3;
160 + tnw = (nw*2)/3;
161 + tnh = (nh)/3;
162 + break;
163 + case 2: //center
164 + tnx += (nw)/3;
165 + tnw = (nw)/3;
166 + tny += (nh)/3;
167 + tnh = (nh)/3;
168 + break;
169 + case 3: //bottom-right-vert
170 + tnx += (nw*2)/3;
171 + tnw = (nw)/3;
172 + tny += (nh)/3;
173 + tnh = (nh*2)/3;
174 + break;
175 + case 4: //(oldest) bottom-left-hor
176 + tnw = (2*nw)/3;
177 + tny += (2*nh)/3;
178 + tnh = (nh)/3;
179 + break;
180 + default:
181 + break;
182 + }
183 +
184 + ++i;
185 + //i%=5;
186 + resize(c, tnx, tny, tnw - 2 * c->bw, tnh - 2 * c->bw, False);
187 + }
188 + }
189 +}