diff options
author | Shubham Saini <shubham6405@gmail.com> | 2020-05-17 14:54:42 +0000 |
---|---|---|
committer | Shubham Saini <shubham6405@gmail.com> | 2020-05-17 14:54:42 +0000 |
commit | a41f6e7247e0966eb7cbf64095a2654cc4dd01de (patch) | |
tree | b3c7f7c5e7a132201d08892b2a9fb066ee7a292b /dwm/patches/dwm-vanitygaps-20190508-6.2.diff | |
parent | 16d45c32c20d7b3db8ba2533ca9d414d8cd308f2 (diff) |
patched dwm
Diffstat (limited to 'dwm/patches/dwm-vanitygaps-20190508-6.2.diff')
-rw-r--r-- | dwm/patches/dwm-vanitygaps-20190508-6.2.diff | 259 |
1 files changed, 259 insertions, 0 deletions
diff --git a/dwm/patches/dwm-vanitygaps-20190508-6.2.diff b/dwm/patches/dwm-vanitygaps-20190508-6.2.diff new file mode 100644 index 0000000..ea22e23 --- /dev/null +++ b/dwm/patches/dwm-vanitygaps-20190508-6.2.diff | |||
@@ -0,0 +1,259 @@ | |||
1 | From 20967685d6879bd611a856ade154df19da9ddc7b Mon Sep 17 00:00:00 2001 | ||
2 | From: Stein Gunnar Bakkeby <bakkeby@gmail.com> | ||
3 | Date: Wed, 8 May 2019 08:07:14 +0200 | ||
4 | Subject: [PATCH] Vanity gaps - allows control of both inner and outer gaps | ||
5 | between windows and screen edge | ||
6 | |||
7 | --- | ||
8 | config.def.h | 21 +++++++++ | ||
9 | dwm.c | 150 +++++++++++++++++++++++++++++++++++++++++++++++++++++++---- | ||
10 | 2 files changed, 161 insertions(+), 10 deletions(-) | ||
11 | |||
12 | diff --git a/config.def.h b/config.def.h | ||
13 | index 1c0b587..0927c2d 100644 | ||
14 | --- a/config.def.h | ||
15 | +++ b/config.def.h | ||
16 | @@ -3,6 +3,11 @@ | ||
17 | /* appearance */ | ||
18 | static const unsigned int borderpx = 1; /* border pixel of windows */ | ||
19 | static const unsigned int snap = 32; /* snap pixel */ | ||
20 | +static const unsigned int gappih = 10; /* horiz inner gap between windows */ | ||
21 | +static const unsigned int gappiv = 10; /* vert inner gap between windows */ | ||
22 | +static const unsigned int gappoh = 10; /* horiz outer gap between windows and screen edge */ | ||
23 | +static const unsigned int gappov = 10; /* vert outer gap between windows and screen edge */ | ||
24 | +static const int smartgaps = 0; /* 1 means no outer gap when there is only one window */ | ||
25 | static const int showbar = 1; /* 0 means no bar */ | ||
26 | static const int topbar = 1; /* 0 means bottom bar */ | ||
27 | static const char *fonts[] = { "monospace:size=10" }; | ||
28 | @@ -70,6 +75,22 @@ static Key keys[] = { | ||
29 | { MODKEY, XK_d, incnmaster, {.i = -1 } }, | ||
30 | { MODKEY, XK_h, setmfact, {.f = -0.05} }, | ||
31 | { MODKEY, XK_l, setmfact, {.f = +0.05} }, | ||
32 | + { MODKEY|Mod4Mask, XK_h, incrgaps, {.i = +1 } }, | ||
33 | + { MODKEY|Mod4Mask, XK_l, incrgaps, {.i = -1 } }, | ||
34 | + { MODKEY|Mod4Mask|ShiftMask, XK_h, incrogaps, {.i = +1 } }, | ||
35 | + { MODKEY|Mod4Mask|ShiftMask, XK_l, incrogaps, {.i = -1 } }, | ||
36 | + { MODKEY|Mod4Mask|ControlMask, XK_h, incrigaps, {.i = +1 } }, | ||
37 | + { MODKEY|Mod4Mask|ControlMask, XK_l, incrigaps, {.i = -1 } }, | ||
38 | + { MODKEY|Mod4Mask, XK_0, togglegaps, {0} }, | ||
39 | + { MODKEY|Mod4Mask|ShiftMask, XK_0, defaultgaps, {0} }, | ||
40 | + { MODKEY, XK_y, incrihgaps, {.i = +1 } }, | ||
41 | + { MODKEY, XK_o, incrihgaps, {.i = -1 } }, | ||
42 | + { MODKEY|ControlMask, XK_y, incrivgaps, {.i = +1 } }, | ||
43 | + { MODKEY|ControlMask, XK_o, incrivgaps, {.i = -1 } }, | ||
44 | + { MODKEY|Mod4Mask, XK_y, incrohgaps, {.i = +1 } }, | ||
45 | + { MODKEY|Mod4Mask, XK_o, incrohgaps, {.i = -1 } }, | ||
46 | + { MODKEY|ShiftMask, XK_y, incrovgaps, {.i = +1 } }, | ||
47 | + { MODKEY|ShiftMask, XK_o, incrovgaps, {.i = -1 } }, | ||
48 | { MODKEY, XK_Return, zoom, {0} }, | ||
49 | { MODKEY, XK_Tab, view, {0} }, | ||
50 | { MODKEY|ShiftMask, XK_c, killclient, {0} }, | ||
51 | diff --git a/dwm.c b/dwm.c | ||
52 | index 4465af1..88f3e04 100644 | ||
53 | --- a/dwm.c | ||
54 | +++ b/dwm.c | ||
55 | @@ -119,6 +119,10 @@ struct Monitor { | ||
56 | int by; /* bar geometry */ | ||
57 | int mx, my, mw, mh; /* screen size */ | ||
58 | int wx, wy, ww, wh; /* window area */ | ||
59 | + int gappih; /* horizontal gap between windows */ | ||
60 | + int gappiv; /* vertical gap between windows */ | ||
61 | + int gappoh; /* horizontal outer gaps */ | ||
62 | + int gappov; /* vertical outer gaps */ | ||
63 | unsigned int seltags; | ||
64 | unsigned int sellt; | ||
65 | unsigned int tagset[2]; | ||
66 | @@ -199,6 +203,16 @@ static void sendmon(Client *c, Monitor *m); | ||
67 | static void setclientstate(Client *c, long state); | ||
68 | static void setfocus(Client *c); | ||
69 | static void setfullscreen(Client *c, int fullscreen); | ||
70 | +static void setgaps(int oh, int ov, int ih, int iv); | ||
71 | +static void incrgaps(const Arg *arg); | ||
72 | +static void incrigaps(const Arg *arg); | ||
73 | +static void incrogaps(const Arg *arg); | ||
74 | +static void incrohgaps(const Arg *arg); | ||
75 | +static void incrovgaps(const Arg *arg); | ||
76 | +static void incrihgaps(const Arg *arg); | ||
77 | +static void incrivgaps(const Arg *arg); | ||
78 | +static void togglegaps(const Arg *arg); | ||
79 | +static void defaultgaps(const Arg *arg); | ||
80 | static void setlayout(const Arg *arg); | ||
81 | static void setmfact(const Arg *arg); | ||
82 | static void setup(void); | ||
83 | @@ -240,6 +254,7 @@ static char stext[256]; | ||
84 | static int screen; | ||
85 | static int sw, sh; /* X display screen geometry width, height */ | ||
86 | static int bh, blw = 0; /* bar geometry */ | ||
87 | +static int enablegaps = 1; /* enables gaps, used by togglegaps */ | ||
88 | static int lrpad; /* sum of left and right padding for text */ | ||
89 | static int (*xerrorxlib)(Display *, XErrorEvent *); | ||
90 | static unsigned int numlockmask = 0; | ||
91 | @@ -638,6 +653,10 @@ createmon(void) | ||
92 | m->nmaster = nmaster; | ||
93 | m->showbar = showbar; | ||
94 | m->topbar = topbar; | ||
95 | + m->gappih = gappih; | ||
96 | + m->gappiv = gappiv; | ||
97 | + m->gappoh = gappoh; | ||
98 | + m->gappov = gappov; | ||
99 | m->lt[0] = &layouts[0]; | ||
100 | m->lt[1] = &layouts[1 % LENGTH(layouts)]; | ||
101 | strncpy(m->ltsymbol, layouts[0].symbol, sizeof m->ltsymbol); | ||
102 | @@ -1498,6 +1517,111 @@ setfullscreen(Client *c, int fullscreen) | ||
103 | } | ||
104 | |||
105 | void | ||
106 | +setgaps(int oh, int ov, int ih, int iv) | ||
107 | +{ | ||
108 | + if (oh < 0) oh = 0; | ||
109 | + if (ov < 0) ov = 0; | ||
110 | + if (ih < 0) ih = 0; | ||
111 | + if (iv < 0) iv = 0; | ||
112 | + | ||
113 | + selmon->gappoh = oh; | ||
114 | + selmon->gappov = ov; | ||
115 | + selmon->gappih = ih; | ||
116 | + selmon->gappiv = iv; | ||
117 | + arrange(selmon); | ||
118 | +} | ||
119 | + | ||
120 | +void | ||
121 | +togglegaps(const Arg *arg) | ||
122 | +{ | ||
123 | + enablegaps = !enablegaps; | ||
124 | + arrange(selmon); | ||
125 | +} | ||
126 | + | ||
127 | +void | ||
128 | +defaultgaps(const Arg *arg) | ||
129 | +{ | ||
130 | + setgaps(gappoh, gappov, gappih, gappiv); | ||
131 | +} | ||
132 | + | ||
133 | +void | ||
134 | +incrgaps(const Arg *arg) | ||
135 | +{ | ||
136 | + setgaps( | ||
137 | + selmon->gappoh + arg->i, | ||
138 | + selmon->gappov + arg->i, | ||
139 | + selmon->gappih + arg->i, | ||
140 | + selmon->gappiv + arg->i | ||
141 | + ); | ||
142 | +} | ||
143 | + | ||
144 | +void | ||
145 | +incrigaps(const Arg *arg) | ||
146 | +{ | ||
147 | + setgaps( | ||
148 | + selmon->gappoh, | ||
149 | + selmon->gappov, | ||
150 | + selmon->gappih + arg->i, | ||
151 | + selmon->gappiv + arg->i | ||
152 | + ); | ||
153 | +} | ||
154 | + | ||
155 | +void | ||
156 | +incrogaps(const Arg *arg) | ||
157 | +{ | ||
158 | + setgaps( | ||
159 | + selmon->gappoh + arg->i, | ||
160 | + selmon->gappov + arg->i, | ||
161 | + selmon->gappih, | ||
162 | + selmon->gappiv | ||
163 | + ); | ||
164 | +} | ||
165 | + | ||
166 | +void | ||
167 | +incrohgaps(const Arg *arg) | ||
168 | +{ | ||
169 | + setgaps( | ||
170 | + selmon->gappoh + arg->i, | ||
171 | + selmon->gappov, | ||
172 | + selmon->gappih, | ||
173 | + selmon->gappiv | ||
174 | + ); | ||
175 | +} | ||
176 | + | ||
177 | +void | ||
178 | +incrovgaps(const Arg *arg) | ||
179 | +{ | ||
180 | + setgaps( | ||
181 | + selmon->gappoh, | ||
182 | + selmon->gappov + arg->i, | ||
183 | + selmon->gappih, | ||
184 | + selmon->gappiv | ||
185 | + ); | ||
186 | +} | ||
187 | + | ||
188 | +void | ||
189 | +incrihgaps(const Arg *arg) | ||
190 | +{ | ||
191 | + setgaps( | ||
192 | + selmon->gappoh, | ||
193 | + selmon->gappov, | ||
194 | + selmon->gappih + arg->i, | ||
195 | + selmon->gappiv | ||
196 | + ); | ||
197 | +} | ||
198 | + | ||
199 | +void | ||
200 | +incrivgaps(const Arg *arg) | ||
201 | +{ | ||
202 | + setgaps( | ||
203 | + selmon->gappoh, | ||
204 | + selmon->gappov, | ||
205 | + selmon->gappih, | ||
206 | + selmon->gappiv + arg->i | ||
207 | + ); | ||
208 | +} | ||
209 | + | ||
210 | +void | ||
211 | setlayout(const Arg *arg) | ||
212 | { | ||
213 | if (!arg || !arg->v || arg->v != selmon->lt[selmon->sellt]) | ||
214 | @@ -1673,26 +1797,32 @@ tagmon(const Arg *arg) | ||
215 | void | ||
216 | tile(Monitor *m) | ||
217 | { | ||
218 | - unsigned int i, n, h, mw, my, ty; | ||
219 | + unsigned int i, n, h, r, oe = enablegaps, ie = enablegaps, mw, my, ty; | ||
220 | Client *c; | ||
221 | |||
222 | for (n = 0, c = nexttiled(m->clients); c; c = nexttiled(c->next), n++); | ||
223 | if (n == 0) | ||
224 | return; | ||
225 | |||
226 | + if (smartgaps == n) { | ||
227 | + oe = 0; // outer gaps disabled | ||
228 | + } | ||
229 | + | ||
230 | if (n > m->nmaster) | ||
231 | - mw = m->nmaster ? m->ww * m->mfact : 0; | ||
232 | + mw = m->nmaster ? (m->ww + m->gappiv*ie) * m->mfact : 0; | ||
233 | else | ||
234 | - mw = m->ww; | ||
235 | - for (i = my = ty = 0, c = nexttiled(m->clients); c; c = nexttiled(c->next), i++) | ||
236 | + mw = m->ww - 2*m->gappov*oe + m->gappiv*ie; | ||
237 | + for (i = 0, my = ty = m->gappoh*oe, c = nexttiled(m->clients); c; c = nexttiled(c->next), i++) | ||
238 | if (i < m->nmaster) { | ||
239 | - h = (m->wh - my) / (MIN(n, m->nmaster) - i); | ||
240 | - resize(c, m->wx, m->wy + my, mw - (2*c->bw), h - (2*c->bw), 0); | ||
241 | - my += HEIGHT(c); | ||
242 | + r = MIN(n, m->nmaster) - i; | ||
243 | + h = (m->wh - my - m->gappoh*oe - m->gappih*ie * (r - 1)) / r; | ||
244 | + resize(c, m->wx + m->gappov*oe, m->wy + my, mw - (2*c->bw) - m->gappiv*ie, h - (2*c->bw), 0); | ||
245 | + my += HEIGHT(c) + m->gappih*ie; | ||
246 | } else { | ||
247 | - h = (m->wh - ty) / (n - i); | ||
248 | - resize(c, m->wx + mw, m->wy + ty, m->ww - mw - (2*c->bw), h - (2*c->bw), 0); | ||
249 | - ty += HEIGHT(c); | ||
250 | + r = n - i; | ||
251 | + h = (m->wh - ty - m->gappoh*oe - m->gappih*ie * (r - 1)) / r; | ||
252 | + resize(c, m->wx + mw + m->gappov*oe, m->wy + ty, m->ww - mw - (2*c->bw) - 2*m->gappov*oe, h - (2*c->bw), 0); | ||
253 | + ty += HEIGHT(c) + m->gappih*ie; | ||
254 | } | ||
255 | } | ||
256 | |||
257 | -- | ||
258 | 2.7.4 | ||
259 | |||