Re: [hackers] [dwm][patch] uselessgap fix

From: Hiltjo Posthuma <hiltjo_AT_codemadness.org>
Date: Sun, 21 Nov 2021 12:26:40 +0100

This doesn't below here, but on the wiki.

You can push it yourself to the wiki repository as described on the wiki page.

On Sun, Nov 21, 2021 at 11:42:05AM +0100, thim wrote:
> The inner gap between the master and slave stack is currently double of
> whatever the gappx variable is. This should be fixed with this patch.
>
> OK?
>
> PS: I sent this patch the other day via git send-mail but I'm not sure
> if it actually sent it, if so ignore this email.
>
>
> From 45c0972e8e2243f29c949a73124dd0be6e146f6a Mon Sep 17 00:00:00 2001
> From: cirala <thim_AT_cederlund.de>
> Date: Fri, 19 Nov 2021 18:24:43 +0100
> Subject: [PATCH] [PATCH] gap fix for uselessgap
>
> Previously there would be an uneven gap between the master and slave
> stack.
> ---
> config.def.h | 3 ++-
> dwm.c | 38 +++++++++++++++++++++++++++++++-------
> 2 files changed, 33 insertions(+), 8 deletions(-)
>
> diff --git a/config.def.h b/config.def.h
> index a2ac963..17a205f 100644
> --- a/config.def.h
> +++ b/config.def.h
> _AT_@ -2,6 +2,7 @@
>
> /* appearance */
> static const unsigned int borderpx = 1; /* border pixel of windows */
> +static const unsigned int gappx = 6; /* gaps between windows */
> static const unsigned int snap = 32; /* snap pixel */
> static const int showbar = 1; /* 0 means no bar */
> static const int topbar = 1; /* 0 means bottom bar */
> _AT_@ -34,7 +35,7 @@ static const Rule rules[] = {
> /* layout(s) */
> static const float mfact = 0.55; /* factor of master area size [0.05..0.95] */
> static const int nmaster = 1; /* number of clients in master area */
> -static const int resizehints = 1; /* 1 means respect size hints in tiled resizals */
> +static const int resizehints = 0; /* 1 means respect size hints in tiled resizals */
> static const int lockfullscreen = 1; /* 1 will force focus on the fullscreen window */
>
> static const Layout layouts[] = {
> diff --git a/dwm.c b/dwm.c
> index 5e4d494..b626e89 100644
> --- a/dwm.c
> +++ b/dwm.c
> _AT_@ -52,8 +52,8 @@
> #define ISVISIBLE(C) ((C->tags & C->mon->tagset[C->mon->seltags]))
> #define LENGTH(X) (sizeof X / sizeof X[0])
> #define MOUSEMASK (BUTTONMASK|PointerMotionMask)
> -#define WIDTH(X) ((X)->w + 2 * (X)->bw)
> -#define HEIGHT(X) ((X)->h + 2 * (X)->bw)
> +#define WIDTH(X) ((X)->w + 2 * (X)->bw + gappx)
> +#define HEIGHT(X) ((X)->h + 2 * (X)->bw + gappx)
> #define TAGMASK ((1 << LENGTH(tags)) - 1)
> #define TEXTW(X) (drw_fontset_getwidth(drw, (X)) + lrpad)
>
> _AT_@ -1277,12 +1277,36 @@ void
> resizeclient(Client *c, int x, int y, int w, int h)
> {
> XWindowChanges wc;
> + unsigned int n;
> + unsigned int gapoffset;
> + unsigned int gapincr;
> + Client *nbc;
>
> - c->oldx = c->x; c->x = wc.x = x;
> - c->oldy = c->y; c->y = wc.y = y;
> - c->oldw = c->w; c->w = wc.width = w;
> - c->oldh = c->h; c->h = wc.height = h;
> wc.border_width = c->bw;
> +
> + /* Get number of clients for the client's monitor */
> + for (n = 0, nbc = nexttiled(c->mon->clients); nbc; nbc = nexttiled(nbc->next), n++);
> +
> + /* Do nothing if layout is floating */
> + if (c->isfloating || c->mon->lt[c->mon->sellt]->arrange == NULL) {
> + gapincr = gapoffset = 0;
> + } else {
> + /* Remove border and gap if layout is monocle or only one client */
> + if (c->mon->lt[c->mon->sellt]->arrange == monocle || n == 1) {
> + gapoffset = 0;
> + gapincr = -2 * borderpx;
> + wc.border_width = 0;
> + } else {
> + gapoffset = gappx;
> + gapincr = 2 * gappx;
> + }
> + }
> +
> + c->oldx = c->x; c->x = wc.x = x + gapoffset;
> + c->oldy = c->y; c->y = wc.y = y + gapoffset;
> + c->oldw = c->w; c->w = wc.width = w - gapincr;
> + c->oldh = c->h; c->h = wc.height = h - gapincr;
> +
> XConfigureWindow(dpy, c->win, CWX|CWY|CWWidth|CWHeight|CWBorderWidth, &wc);
> configure(c);
> XSync(dpy, False);
> _AT_@ -1688,7 +1712,7 @@ tile(Monitor *m)
> for (i = my = ty = 0, c = nexttiled(m->clients); c; c = nexttiled(c->next), i++)
> if (i < m->nmaster) {
> h = (m->wh - my) / (MIN(n, m->nmaster) - i);
> - resize(c, m->wx, m->wy + my, mw - (2*c->bw), h - (2*c->bw), 0);
> + resize(c, m->wx, m->wy + my, mw - (2*c->bw) + (n > 1 ? gappx : 0), h - (2*c->bw), 0);
> if (my + HEIGHT(c) < m->wh)
> my += HEIGHT(c);
> } else {
> --
> 2.33.1
>
>

-- 
Kind regards,
Hiltjo
Received on Sun Nov 21 2021 - 12:26:40 CET

This archive was generated by hypermail 2.3.0 : Sun Nov 21 2021 - 12:36:33 CET