Introduction
Introduction Statistics Contact Development Disclaimer Help
dwm-functionalgaps-6.2.diff - sites - public wiki contents of suckless.org
git clone git://git.suckless.org/sites
Log
Files
Refs
---
dwm-functionalgaps-6.2.diff (8311B)
---
1 diff -pur dwm.git/config.def.h dwm.mygaps/config.def.h
2 --- dwm.git/config.def.h 2021-02-27 21:17:53.862314811 -0600
3 +++ dwm.mygaps/config.def.h 2021-02-28 00:06:39.066149441 -0600
4 @@ -2,6 +2,8 @@
5
6 /* appearance */
7 static const unsigned int borderpx = 1; /* border pixel of wind…
8 +static const int startwithgaps = 0; /* 1 means gaps…
9 +static const unsigned int gappx = 10; /* default gap between …
10 static const unsigned int snap = 32; /* snap pixel */
11 static const int showbar = 1; /* 0 means no bar */
12 static const int topbar = 1; /* 0 means bottom bar */
13 @@ -84,6 +86,10 @@ static Key keys[] = {
14 { MODKEY, XK_period, focusmon, {.i …
15 { MODKEY|ShiftMask, XK_comma, tagmon, {.i …
16 { MODKEY|ShiftMask, XK_period, tagmon, {.i …
17 + { MODKEY, XK_minus, setgaps, {.i …
18 + { MODKEY, XK_equal, setgaps, {.i …
19 + { MODKEY|ShiftMask, XK_minus, setgaps, {.i …
20 + { MODKEY|ShiftMask, XK_equal, setgaps, {.i …
21 TAGKEYS( XK_1, 0)
22 TAGKEYS( XK_2, 1)
23 TAGKEYS( XK_3, 2)
24 diff -pur dwm.git/dwm.c dwm.mygaps/dwm.c
25 --- dwm.git/dwm.c 2021-02-27 21:17:53.862314811 -0600
26 +++ dwm.mygaps/dwm.c 2021-02-28 00:23:19.232865766 -0600
27 @@ -57,6 +57,9 @@
28 #define TAGMASK ((1 << LENGTH(tags)) - 1)
29 #define TEXTW(X) (drw_fontset_getwidth(drw, (X)) + lrpad)
30
31 +#define GAP_TOGGLE 100
32 +#define GAP_RESET 0
33 +
34 /* enums */
35 enum { CurNormal, CurResize, CurMove, CurLast }; /* cursor */
36 enum { SchemeNorm, SchemeSel }; /* color schemes */
37 @@ -119,6 +122,8 @@ struct Monitor {
38 int by; /* bar geometry */
39 int mx, my, mw, mh; /* screen size */
40 int wx, wy, ww, wh; /* window area */
41 + int gappx; /* gaps between windows */
42 + int drawwithgaps; /* toggle gaps */
43 unsigned int seltags;
44 unsigned int sellt;
45 unsigned int tagset[2];
46 @@ -200,6 +205,7 @@ static void sendmon(Client *c, Monitor *
47 static void setclientstate(Client *c, long state);
48 static void setfocus(Client *c);
49 static void setfullscreen(Client *c, int fullscreen);
50 +static void setgaps(const Arg *arg);
51 static void setlayout(const Arg *arg);
52 static void setmfact(const Arg *arg);
53 static void setup(void);
54 @@ -639,6 +645,8 @@ createmon(void)
55 m->nmaster = nmaster;
56 m->showbar = showbar;
57 m->topbar = topbar;
58 + m->gappx = gappx;
59 + m->drawwithgaps = startwithgaps;
60 m->lt[0] = &layouts[0];
61 m->lt[1] = &layouts[1 % LENGTH(layouts)];
62 strncpy(m->ltsymbol, layouts[0].symbol, sizeof m->ltsymbol);
63 @@ -797,6 +805,12 @@ focus(Client *c)
64 attachstack(c);
65 grabbuttons(c, 1);
66 XSetWindowBorder(dpy, c->win, scheme[SchemeSel][ColBord…
67 + if (!selmon->drawwithgaps && !c->isfloating) {
68 + XWindowChanges wc;
69 + wc.sibling = selmon->barwin;
70 + wc.stack_mode = Below;
71 + XConfigureWindow(dpy, c->win, CWSibling | CWSta…
72 + }
73 setfocus(c);
74 } else {
75 XSetInputFocus(dpy, root, RevertToPointerRoot, CurrentT…
76 @@ -1113,7 +1127,10 @@ monocle(Monitor *m)
77 if (n > 0) /* override layout symbol */
78 snprintf(m->ltsymbol, sizeof m->ltsymbol, "[%d]", n);
79 for (c = nexttiled(m->clients); c; c = nexttiled(c->next))
80 - resize(c, m->wx, m->wy, m->ww - 2 * c->bw, m->wh - 2 * …
81 + if (selmon->drawwithgaps)
82 + resize(c, m->wx, m->wy, m->ww - 2 * c->bw, m->w…
83 + else
84 + resize(c, m->wx - c->bw, m->wy, m->ww, m->wh, F…
85 }
86
87 void
88 @@ -1283,6 +1300,15 @@ resizeclient(Client *c, int x, int y, in
89 c->oldw = c->w; c->w = wc.width = w;
90 c->oldh = c->h; c->h = wc.height = h;
91 wc.border_width = c->bw;
92 + if (!selmon->drawwithgaps && /* this is the noborderfloatingfix…
93 + (((nexttiled(c->mon->clients) == c && !nexttiled(c->next)) …
94 + || &monocle == c->mon->lt[c->mon->sellt]->arrange))
95 + && !c->isfullscreen && !c->isfloating
96 + && NULL != c->mon->lt[c->mon->sellt]->arrange) {
97 + c->w = wc.width += c->bw * 2;
98 + c->h = wc.height += c->bw * 2;
99 + wc.border_width = 0;
100 + }
101 XConfigureWindow(dpy, c->win, CWX|CWY|CWWidth|CWHeight|CWBorder…
102 configure(c);
103 XSync(dpy, False);
104 @@ -1499,6 +1525,26 @@ setfullscreen(Client *c, int fullscreen)
105 }
106
107 void
108 +setgaps(const Arg *arg)
109 +{
110 + switch(arg->i)
111 + {
112 + case GAP_TOGGLE:
113 + selmon->drawwithgaps = !selmon->drawwithgaps;
114 + break;
115 + case GAP_RESET:
116 + selmon->gappx = gappx;
117 + break;
118 + default:
119 + if (selmon->gappx + arg->i < 0)
120 + selmon->gappx = 0;
121 + else
122 + selmon->gappx += arg->i;
123 + }
124 + arrange(selmon);
125 +}
126 +
127 +void
128 setlayout(const Arg *arg)
129 {
130 if (!arg || !arg->v || arg->v != selmon->lt[selmon->sellt])
131 @@ -1680,23 +1726,42 @@ tile(Monitor *m)
132 for (n = 0, c = nexttiled(m->clients); c; c = nexttiled(c->next…
133 if (n == 0)
134 return;
135 -
136 - if (n > m->nmaster)
137 - mw = m->nmaster ? m->ww * m->mfact : 0;
138 - else
139 - mw = m->ww;
140 - for (i = my = ty = 0, c = nexttiled(m->clients); c; c = nexttil…
141 - if (i < m->nmaster) {
142 - h = (m->wh - my) / (MIN(n, m->nmaster) - i);
143 - resize(c, m->wx, m->wy + my, mw - (2*c->bw), h …
144 - if (my + HEIGHT(c) < m->wh)
145 - my += HEIGHT(c);
146 - } else {
147 - h = (m->wh - ty) / (n - i);
148 - resize(c, m->wx + mw, m->wy + ty, m->ww - mw - …
149 - if (ty + HEIGHT(c) < m->wh)
150 - ty += HEIGHT(c);
151 - }
152 + if (m->drawwithgaps) { /* draw with fullgaps logic */
153 + if (n > m->nmaster)
154 + mw = m->nmaster ? m->ww * m->mfact : 0;
155 + else
156 + mw = m->ww - m->gappx;
157 + for (i = 0, my = ty = m->gappx, c = nexttiled(m->client…
158 + if (i < m->nmaster) {
159 + h = (m->wh - my) / (MIN(n, m->nmaster) …
160 + resize(c, m->wx + m->gappx, m->wy + my,…
161 + if (my + HEIGHT(c) + m->gappx < m->wh)
162 + my += HEIGHT(c) + m->gappx;
163 + } else {
164 + h = (m->wh - ty) / (n - i) - m->gappx;
165 + resize(c, m->wx + mw + m->gappx, m->wy …
166 + if (ty + HEIGHT(c) + m->gappx < m->wh)
167 + ty += HEIGHT(c) + m->gappx;
168 + }
169 + } else { /* draw with singularborders logic */
170 + if (n > m->nmaster)
171 + mw = m->nmaster ? m->ww * m->mfact : 0;
172 + else
173 + mw = m->ww;
174 + for (i = my = ty = 0, c = nexttiled(m->clients); c; c =…
175 + if (i < m->nmaster) {
176 + h = (m->wh - my) / (MIN(n, m->nmaster) …
177 + if (n == 1)
178 + resize(c, m->wx - c->bw, m->wy,…
179 + else
180 + resize(c, m->wx - c->bw, m->wy …
181 + my += HEIGHT(c) - c->bw;
182 + } else {
183 + h = (m->wh - ty) / (n - i);
184 + resize(c, m->wx + mw - c->bw, m->wy + t…
185 + ty += HEIGHT(c) - c->bw;
186 + }
187 + }
188 }
189
190 void
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.