Introduction
Introduction Statistics Contact Development Disclaimer Help
dwm-vanitygaps-20200610-f09418b.diff - sites - public wiki contents of suckless…
git clone git://git.suckless.org/sites
Log
Files
Refs
---
dwm-vanitygaps-20200610-f09418b.diff (8300B)
---
1 From c35fd03ec002e1f4476a75203ff9b5cbcc630177 Mon Sep 17 00:00:00 2001
2 From: Michel Boaventura <[email protected]>
3 Date: Wed, 10 Jun 2020 10:46:51 -0300
4 Subject: [PATCH] Update Vanity Gaps to master
5
6 ---
7 config.def.h | 21 +++++++
8 dwm.c | 154 +++++++++++++++++++++++++++++++++++++++++++++++----
9 2 files changed, 163 insertions(+), 12 deletions(-)
10
11 diff --git a/config.def.h b/config.def.h
12 index 1c0b587..0927c2d 100644
13 --- a/config.def.h
14 +++ b/config.def.h
15 @@ -3,6 +3,11 @@
16 /* appearance */
17 static const unsigned int borderpx = 1; /* border pixel of wind…
18 static const unsigned int snap = 32; /* snap pixel */
19 +static const unsigned int gappih = 10; /* horiz inner gap betw…
20 +static const unsigned int gappiv = 10; /* vert inner gap betwe…
21 +static const unsigned int gappoh = 10; /* horiz outer gap betw…
22 +static const unsigned int gappov = 10; /* vert outer gap betwe…
23 +static const int smartgaps = 0; /* 1 means no outer gap…
24 static const int showbar = 1; /* 0 means no bar */
25 static const int topbar = 1; /* 0 means bottom bar */
26 static const char *fonts[] = { "monospace:size=10" };
27 @@ -70,6 +75,22 @@ static Key keys[] = {
28 { MODKEY, XK_d, incnmaster, {.i …
29 { MODKEY, XK_h, setmfact, {.f …
30 { MODKEY, XK_l, setmfact, {.f …
31 + { MODKEY|Mod4Mask, XK_h, incrgaps, {.i …
32 + { MODKEY|Mod4Mask, XK_l, incrgaps, {.i …
33 + { MODKEY|Mod4Mask|ShiftMask, XK_h, incrogaps, {.i …
34 + { MODKEY|Mod4Mask|ShiftMask, XK_l, incrogaps, {.i …
35 + { MODKEY|Mod4Mask|ControlMask, XK_h, incrigaps, {.i …
36 + { MODKEY|Mod4Mask|ControlMask, XK_l, incrigaps, {.i …
37 + { MODKEY|Mod4Mask, XK_0, togglegaps, {0} …
38 + { MODKEY|Mod4Mask|ShiftMask, XK_0, defaultgaps, {0} …
39 + { MODKEY, XK_y, incrihgaps, {.i …
40 + { MODKEY, XK_o, incrihgaps, {.i …
41 + { MODKEY|ControlMask, XK_y, incrivgaps, {.i …
42 + { MODKEY|ControlMask, XK_o, incrivgaps, {.i …
43 + { MODKEY|Mod4Mask, XK_y, incrohgaps, {.i …
44 + { MODKEY|Mod4Mask, XK_o, incrohgaps, {.i …
45 + { MODKEY|ShiftMask, XK_y, incrovgaps, {.i …
46 + { MODKEY|ShiftMask, XK_o, incrovgaps, {.i …
47 { MODKEY, XK_Return, zoom, {0} …
48 { MODKEY, XK_Tab, view, {0} …
49 { MODKEY|ShiftMask, XK_c, killclient, {0} …
50 diff --git a/dwm.c b/dwm.c
51 index 9fd0286..50dbbaf 100644
52 --- a/dwm.c
53 +++ b/dwm.c
54 @@ -119,6 +119,10 @@ struct Monitor {
55 int by; /* bar geometry */
56 int mx, my, mw, mh; /* screen size */
57 int wx, wy, ww, wh; /* window area */
58 + int gappih; /* horizontal gap between windows */
59 + int gappiv; /* vertical gap between windows */
60 + int gappoh; /* horizontal outer gaps */
61 + int gappov; /* vertical outer gaps */
62 unsigned int seltags;
63 unsigned int sellt;
64 unsigned int tagset[2];
65 @@ -200,6 +204,16 @@ static void sendmon(Client *c, Monitor *m);
66 static void setclientstate(Client *c, long state);
67 static void setfocus(Client *c);
68 static void setfullscreen(Client *c, int fullscreen);
69 +static void setgaps(int oh, int ov, int ih, int iv);
70 +static void incrgaps(const Arg *arg);
71 +static void incrigaps(const Arg *arg);
72 +static void incrogaps(const Arg *arg);
73 +static void incrohgaps(const Arg *arg);
74 +static void incrovgaps(const Arg *arg);
75 +static void incrihgaps(const Arg *arg);
76 +static void incrivgaps(const Arg *arg);
77 +static void togglegaps(const Arg *arg);
78 +static void defaultgaps(const Arg *arg);
79 static void setlayout(const Arg *arg);
80 static void setmfact(const Arg *arg);
81 static void setup(void);
82 @@ -241,6 +255,7 @@ static char stext[256];
83 static int screen;
84 static int sw, sh; /* X display screen geometry width, height…
85 static int bh, blw = 0; /* bar geometry */
86 +static int enablegaps = 1; /* enables gaps, used by togglegaps */
87 static int lrpad; /* sum of left and right padding for text …
88 static int (*xerrorxlib)(Display *, XErrorEvent *);
89 static unsigned int numlockmask = 0;
90 @@ -639,6 +654,10 @@ createmon(void)
91 m->nmaster = nmaster;
92 m->showbar = showbar;
93 m->topbar = topbar;
94 + m->gappih = gappih;
95 + m->gappiv = gappiv;
96 + m->gappoh = gappoh;
97 + m->gappov = gappov;
98 m->lt[0] = &layouts[0];
99 m->lt[1] = &layouts[1 % LENGTH(layouts)];
100 strncpy(m->ltsymbol, layouts[0].symbol, sizeof m->ltsymbol);
101 @@ -1498,6 +1517,111 @@ setfullscreen(Client *c, int fullscreen)
102 }
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 @@ -1674,28 +1798,34 @@ tagmon(const Arg *arg)
214 void
215 tile(Monitor *m)
216 {
217 - unsigned int i, n, h, mw, my, ty;
218 + unsigned int i, n, h, r, oe = enablegaps, ie = enablegaps, mw, …
219 Client *c;
220
221 for (n = 0, c = nexttiled(m->clients); c; c = nexttiled(c->next…
222 if (n == 0)
223 return;
224
225 + if (smartgaps == n) {
226 + oe = 0; // outer gaps disabled
227 + }
228 +
229 if (n > m->nmaster)
230 - mw = m->nmaster ? m->ww * m->mfact : 0;
231 + mw = m->nmaster ? (m->ww + m->gappiv*ie) * m->mfact : 0;
232 else
233 - mw = m->ww;
234 - for (i = my = ty = 0, c = nexttiled(m->clients); c; c = nexttil…
235 + mw = m->ww - 2*m->gappov*oe + m->gappiv*ie;
236 + for (i = 0, my = ty = m->gappoh*oe, c = nexttiled(m->clients); …
237 if (i < m->nmaster) {
238 - h = (m->wh - my) / (MIN(n, m->nmaster) - i);
239 - resize(c, m->wx, m->wy + my, mw - (2*c->bw), h …
240 - if (my + HEIGHT(c) < m->wh)
241 - my += HEIGHT(c);
242 + r = MIN(n, m->nmaster) - i;
243 + h = (m->wh - my - m->gappoh*oe - m->gappih*ie *…
244 + resize(c, m->wx + m->gappov*oe, m->wy + my, mw …
245 + if (my + HEIGHT(c) + m->gappih*ie < m->wh)
246 + my += HEIGHT(c) + m->gappih*ie;
247 } else {
248 - h = (m->wh - ty) / (n - i);
249 - resize(c, m->wx + mw, m->wy + ty, m->ww - mw - …
250 - if (ty + HEIGHT(c) < m->wh)
251 - ty += HEIGHT(c);
252 + r = n - i;
253 + h = (m->wh - ty - m->gappoh*oe - m->gappih*ie *…
254 + resize(c, m->wx + mw + m->gappov*oe, m->wy + ty…
255 + if (ty + HEIGHT(c) + m->gappih*ie < m->wh)
256 + ty += HEIGHT(c) + m->gappih*ie;
257 }
258 }
259
260 --
261 2.27.0
262
You are viewing proxied material from suckless.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.