dwm-xtile-gaps-6.2.diff - sites - public wiki contents of suckless.org | |
git clone git://git.suckless.org/sites | |
Log | |
Files | |
Refs | |
--- | |
dwm-xtile-gaps-6.2.diff (6257B) | |
--- | |
1 From 09e6db7a154c2dc3f6c5533ba3e33f460a8e21e1 Mon Sep 17 00:00:00 2001 | |
2 From: MLquest8 <[email protected]> | |
3 Date: Mon, 15 Jun 2020 21:32:22 +0400 | |
4 Subject: [PATCH] gaps for xtile. Fully independent outer and inner gaps | |
5 adjustable at runtime. Also includes a setting to disable gaps when onl… | |
6 window is open. For version 6.2 | |
7 | |
8 --- | |
9 config.def.h | 9 +++++++++ | |
10 dwm.c | 55 ++++++++++++++++++++++++++++++++++++++++------------ | |
11 2 files changed, 52 insertions(+), 12 deletions(-) | |
12 | |
13 diff --git a/config.def.h b/config.def.h | |
14 index 254e51c..91871de 100644 | |
15 --- a/config.def.h | |
16 +++ b/config.def.h | |
17 @@ -2,6 +2,9 @@ | |
18 | |
19 /* appearance */ | |
20 static const unsigned int borderpx = 1; /* border pixel of wind… | |
21 +static const unsigned int igappx = 5; /* size of inner gaps */ | |
22 +static const unsigned int ogappx = 5; /* size of outer gaps */ | |
23 +static const int gapsforone = 0; /* 1 enable gaps whe… | |
24 static const unsigned int snap = 32; /* snap pixel */ | |
25 static const int showbar = 1; /* 0 means no bar */ | |
26 static const int topbar = 1; /* 0 means bottom bar */ | |
27 @@ -76,6 +79,12 @@ static Key keys[] = { | |
28 { MODKEY, XK_Return, zoom, {0} … | |
29 { MODKEY, XK_Tab, view, {0} … | |
30 { MODKEY|ShiftMask, XK_c, killclient, {0} … | |
31 + { MODKEY|ShiftMask, XK_i, setigaps, {.i … | |
32 + { MODKEY|ControlMask, XK_i, setigaps, {.i … | |
33 + { MODKEY|ShiftMask|ControlMask, XK_i, setigaps, {.i … | |
34 + { MODKEY|ShiftMask, XK_o, setogaps, {.i … | |
35 + { MODKEY|ControlMask, XK_o, setogaps, {.i … | |
36 + { MODKEY|ShiftMask|ControlMask, XK_o, setogaps, {.i … | |
37 { MODKEY, XK_t, setlayout, {.v … | |
38 { MODKEY, XK_f, setlayout, {.v … | |
39 { MODKEY, XK_m, setlayout, {.v … | |
40 diff --git a/dwm.c b/dwm.c | |
41 index e43fbad..570739e 100644 | |
42 --- a/dwm.c | |
43 +++ b/dwm.c | |
44 @@ -130,6 +130,7 @@ struct Monitor { | |
45 int by; /* bar geometry */ | |
46 int mx, my, mw, mh; /* screen size */ | |
47 int wx, wy, ww, wh; /* window area */ | |
48 + int igappx, ogappx; /* inner and outer gaps */ | |
49 unsigned int seltags; | |
50 unsigned int sellt; | |
51 unsigned int tagset[2]; | |
52 @@ -214,6 +215,8 @@ static void setdirs(const Arg *arg); | |
53 static void setfacts(const Arg *arg); | |
54 static void setfocus(Client *c); | |
55 static void setfullscreen(Client *c, int fullscreen); | |
56 +static void setigaps(const Arg *arg); | |
57 +static void setogaps(const Arg *arg); | |
58 static void setlayout(const Arg *arg); | |
59 static void setup(void); | |
60 static void seturgent(Client *c, int urg); | |
61 @@ -666,6 +669,8 @@ createmon(void) | |
62 m->nmaster = nmaster; | |
63 m->showbar = showbar; | |
64 m->topbar = topbar; | |
65 + m->igappx = igappx; | |
66 + m->ogappx = ogappx; | |
67 m->lt[0] = &layouts[0]; | |
68 m->lt[1] = &layouts[1 % LENGTH(layouts)]; | |
69 strncpy(m->ltsymbol, layouts[0].symbol, sizeof m->ltsymbol); | |
70 @@ -1569,6 +1574,26 @@ setfullscreen(Client *c, int fullscreen) | |
71 } | |
72 } | |
73 | |
74 +void | |
75 +setigaps(const Arg *arg) | |
76 +{ | |
77 + if ((arg->i == 0) || (selmon->igappx + arg->i < 0)) | |
78 + selmon->igappx = 0; | |
79 + else | |
80 + selmon->igappx += arg->i; | |
81 + arrange(selmon); | |
82 +} | |
83 + | |
84 +void | |
85 +setogaps(const Arg *arg) | |
86 +{ | |
87 + if ((arg->i == 0) || (selmon->ogappx + arg->i < 0)) | |
88 + selmon->ogappx = 0; | |
89 + else | |
90 + selmon->ogappx += arg->i; | |
91 + arrange(selmon); | |
92 +} | |
93 + | |
94 void | |
95 setlayout(const Arg *arg) | |
96 { | |
97 @@ -1733,7 +1758,7 @@ tile(Monitor *m) | |
98 Client *c; | |
99 | |
100 Area *ga = m->pertag->areas[m->pertag->curtag], *ma = ga + 1, *… | |
101 - unsigned int n, i, w, h, ms, ss; | |
102 + unsigned int n, i, w, h, g, ms, ss; | |
103 float f; | |
104 | |
105 /* print layout symbols */ | |
106 @@ -1746,27 +1771,33 @@ tile(Monitor *m) | |
107 for (n = 0, c = nexttiled(m->clients); c; c = nexttiled(c->next… | |
108 if (n == 0) | |
109 return; | |
110 + if(n == 1 && gapsforone == 0){ | |
111 + c = nexttiled(m->clients); | |
112 + resize(c, m->wx, m->wy, m->ww - 2 * c->bw, m->wh - 2 * … | |
113 + return; | |
114 + } | |
115 | |
116 ma->n = MIN(n, m->nmaster), sa->n = n - ma->n; | |
117 /* calculate area rectangles */ | |
118 f = ma->n == 0 ? 0 : (sa->n == 0 ? 1 : ga->fact / 2); | |
119 + g = ma->n == 0 || sa->n == 0 ? 0 : m->igappx; | |
120 if(ga->dir == DirHor || ga->dir == DirRotHor) | |
121 - ms = f * m->ww, ss = m->ww - ms, | |
122 - ma->x = ga->dir == DirHor ? 0 : ss, ma->y = 0, ma->fx =… | |
123 - sa->x = ga->dir == DirHor ? ms : 0, sa->y = 0, sa->fx =… | |
124 + ms = f * (m->ww - g), ss = m->ww - ms - g, | |
125 + ma->x = ga->dir == DirHor ? 0 + m->ogappx : ss + g + m-… | |
126 + sa->x = ga->dir == DirHor ? ms + g - m->ogappx : 0 + m-… | |
127 else | |
128 - ms = f * m->wh, ss = m->wh - ms, | |
129 - ma->x = 0, ma->y = ga->dir == DirVer ? 0 : ss, ma->fx =… | |
130 - sa->x = 0, sa->y = ga->dir == DirVer ? ms : 0, sa->fx =… | |
131 + ms = f * (m->wh - g), ss = m->wh - ms - g, | |
132 + ma->x = 0 + m->ogappx, ma->y = ga->dir == DirVer ? 0 + … | |
133 + sa->x = 0 + m->ogappx, sa->y = ga->dir == DirVer ? ms +… | |
134 /* tile clients */ | |
135 for(c = nexttiled(m->clients), i = 0; i < n; c = nexttiled(c->n… | |
136 a = ma->n > 0 ? ma : sa; | |
137 f = i == 0 || ma->n == 0 ? a->fact : 1, f /= --a->n + f; | |
138 - w = (a->dir == DirVer ? 1 : f) * (a->fx - a->x); | |
139 - h = (a->dir == DirHor ? 1 : f) * (a->fy - a->y); | |
140 - resize(c, m->wx + a->x, m->wy + a->y, w - 2 * c->bw, h … | |
141 - a->x += a->dir == DirHor ? w : 0; | |
142 - a->y += a->dir == DirVer ? h : 0; | |
143 + w = a->dir == DirVer ? a->fx - a->x : f * (a->fx - a->x… | |
144 + h = a->dir == DirHor ? a->fy - a->y : f * (a->fy - a->y… | |
145 + resize(c, m->wx + a->x, m->wy + a->y, w - 2 * c->bw, h … | |
146 + a->x += a->dir == DirHor ? w + m->igappx : 0; | |
147 + a->y += a->dir == DirVer ? h + m->igappx : 0; | |
148 } | |
149 } | |
150 | |
151 -- | |
152 2.26.2 | |
153 |