dwm-fullgaps-6.4.diff - sites - public wiki contents of suckless.org
(HTM) git clone git://git.suckless.org/sites
(DIR) Log
(DIR) Files
(DIR) Refs
---
dwm-fullgaps-6.4.diff (3653B)
---
1 diff -up a/config.def.h b/config.def.h
2 --- a/config.def.h
3 +++ b/config.def.h
4 @@ -2,6 +2,7 @@
5
6 /* appearance */
7 static const unsigned int borderpx = 1; /* border pixel of windows */
8 +static const unsigned int gappx = 5; /* gaps between windows */
9 static const unsigned int snap = 32; /* snap pixel */
10 static const int showbar = 1; /* 0 means no bar */
11 static const int topbar = 1; /* 0 means bottom bar */
12 @@ -85,6 +86,9 @@ static const Key keys[] = {
13 { MODKEY, XK_period, focusmon, {.i = +1 } },
14 { MODKEY|ShiftMask, XK_comma, tagmon, {.i = -1 } },
15 { MODKEY|ShiftMask, XK_period, tagmon, {.i = +1 } },
16 + { MODKEY, XK_minus, setgaps, {.i = -1 } },
17 + { MODKEY, XK_equal, setgaps, {.i = +1 } },
18 + { MODKEY|ShiftMask, XK_equal, setgaps, {.i = 0 } },
19 TAGKEYS( XK_1, 0)
20 TAGKEYS( XK_2, 1)
21 TAGKEYS( XK_3, 2)
22 diff -up a/dwm.c b/dwm.c
23 --- a/dwm.c 2023-04-30
24 +++ b/dwm.c 2023-04-30
25 @@ -119,6 +119,7 @@ struct Monitor {
26 int by; /* bar geometry */
27 int mx, my, mw, mh; /* screen size */
28 int wx, wy, ww, wh; /* window area */
29 + int gappx; /* gaps between windows */
30 unsigned int seltags;
31 unsigned int sellt;
32 unsigned int tagset[2];
33 @@ -200,6 +201,7 @@ static void sendmon(Client *c, Monitor *
34 static void setclientstate(Client *c, long state);
35 static void setfocus(Client *c);
36 static void setfullscreen(Client *c, int fullscreen);
37 +static void setgaps(const Arg *arg);
38 static void setlayout(const Arg *arg);
39 static void setmfact(const Arg *arg);
40 static void setup(void);
41 @@ -641,6 +643,7 @@ createmon(void)
42 m->nmaster = nmaster;
43 m->showbar = showbar;
44 m->topbar = topbar;
45 + m->gappx = gappx;
46 m->lt[0] = &layouts[0];
47 m->lt[1] = &layouts[1 % LENGTH(layouts)];
48 strncpy(m->ltsymbol, layouts[0].symbol, sizeof m->ltsymbol);
49 @@ -1508,6 +1511,16 @@ setfullscreen(Client *c, int fullscreen)
50 }
51
52 void
53 +setgaps(const Arg *arg)
54 +{
55 + if ((arg->i == 0) || (selmon->gappx + arg->i < 0))
56 + selmon->gappx = 0;
57 + else
58 + selmon->gappx += arg->i;
59 + arrange(selmon);
60 +}
61 +
62 +void
63 setlayout(const Arg *arg)
64 {
65 if (!arg || !arg->v || arg->v != selmon->lt[selmon->sellt])
66 @@ -1697,18 +1710,18 @@ tile(Monitor *m)
67 if (n > m->nmaster)
68 mw = m->nmaster ? m->ww * m->mfact : 0;
69 else
70 - mw = m->ww;
71 - for (i = my = ty = 0, c = nexttiled(m->clients); c; c = nexttiled(c->next), i++)
72 - if (i < m->nmaster) {
73 - h = (m->wh - my) / (MIN(n, m->nmaster) - i);
74 - resize(c, m->wx, m->wy + my, mw - (2*c->bw), h - (2*c->bw), 0);
75 - if (my + HEIGHT(c) < m->wh)
76 - my += HEIGHT(c);
77 + mw = m->ww - m->gappx;
78 + for (i = 0, my = ty = m->gappx, c = nexttiled(m->clients); c; c = nexttiled(c->next), i++)
79 + if (i < m->nmaster) {
80 + h = (m->wh - my) / (MIN(n, m->nmaster) - i) - m->gappx;
81 + resize(c, m->wx + m->gappx, m->wy + my, mw - (2*c->bw) - m->gappx, h - (2*c->bw), 0);
82 + if (my + HEIGHT(c) + m->gappx < m->wh)
83 + my += HEIGHT(c) + m->gappx;
84 } else {
85 - h = (m->wh - ty) / (n - i);
86 - resize(c, m->wx + mw, m->wy + ty, m->ww - mw - (2*c->bw), h - (2*c->bw), 0);
87 - if (ty + HEIGHT(c) < m->wh)
88 - ty += HEIGHT(c);
89 + h = (m->wh - ty) / (n - i) - m->gappx;
90 + resize(c, m->wx + mw + m->gappx, m->wy + ty, m->ww - mw - (2*c->bw) - 2*m->gappx, h - (2*c->bw), 0);
91 + if (ty + HEIGHT(c) + m->gappx < m->wh)
92 + ty += HEIGHT(c) + m->gappx;
93 }
94 }