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 <t...@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
> @@ -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 */
> @@ -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
> @@ -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)
> 
> @@ -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);
> @@ -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

Reply via email to