| 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 |