[wiki] [sites] [dwm][patches][barpadding] fix window area misalignment for adjacent monitors || bakkeby

From: <git_AT_suckless.org>
Date: Wed, 20 Oct 2021 09:31:49 +0200

commit 3510d0a15788c93c3119fd694ebf307e9a296e5e
Author: bakkeby <bakkeby_AT_gmail.com>
Date: Wed Oct 20 09:28:12 2021 +0200

    [dwm][patches][barpadding] fix window area misalignment for adjacent monitors
    
    This fixes a bug with the original patch where the sp and vp variables
    were set after the call to updategeom() in the setup function. This
    causes the window area to not take the vertical spacing into account and
    it will be misaligned on startup.
    
    This was worked around by adding another call to updatebarpos(selmon)
    which works for the primary monitor, but leaves the misalignment in place
    for any adjacent monitor in a multi-monitor setup.
    
    The fix for this is simply to move the setting of the sp and vp variables
    before the updategeom() call. Subsequently the call to updatebarpos can
    be removed as well.

diff --git a/dwm.suckless.org/patches/barpadding/dwm-barpadding-20211020-a786211.diff b/dwm.suckless.org/patches/barpadding/dwm-barpadding-20211020-a786211.diff
new file mode 100644
index 00000000..78421819
--- /dev/null
+++ b/dwm.suckless.org/patches/barpadding/dwm-barpadding-20211020-a786211.diff
_AT_@ -0,0 +1,118 @@
+From a3cfb215f7f647d83d67e33df8f33a73e43bd65f Mon Sep 17 00:00:00 2001
+From: Bakkeby <bakkeby_AT_gmail.com>
+Date: Wed, 20 Oct 2021 09:14:07 +0200
+Subject: [PATCH] barpadding: adds space between the statusbar and the edge of
+ the screen
+
+---
+ config.def.h | 2 ++
+ dwm.c | 25 +++++++++++++++----------
+ 2 files changed, 17 insertions(+), 10 deletions(-)
+
+diff --git a/config.def.h b/config.def.h
+index a2ac963..f0b739f 100644
+--- a/config.def.h
++++ b/config.def.h
+_AT_@ -5,6 +5,8 @@ static const unsigned int borderpx = 1; /* border pixel of 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 */
++static const int vertpad = 10; /* vertical padding of bar */
++static const int sidepad = 10; /* horizontal padding of bar */
+ static const char *fonts[] = { "monospace:size=10" };
+ static const char dmenufont[] = "monospace:size=10";
+ static const char col_gray1[] = "#222222";
+diff --git a/dwm.c b/dwm.c
+index 5e4d494..df6d0d7 100644
+--- a/dwm.c
++++ b/dwm.c
+_AT_@ -242,6 +242,8 @@ static int screen;
+ static int sw, sh; /* X display screen geometry width, height */
+ static int bh, blw = 0; /* bar geometry */
+ static int lrpad; /* sum of left and right padding for text */
++static int vp; /* vertical padding for bar */
++static int sp; /* side padding for bar */
+ static int (*xerrorxlib)(Display *, XErrorEvent *);
+ static unsigned int numlockmask = 0;
+ static void (*handler[LASTEvent]) (XEvent *) = {
+_AT_@ -568,7 +570,7 @@ configurenotify(XEvent *e)
+ for (c = m->clients; c; c = c->next)
+ if (c->isfullscreen)
+ resizeclient(c, m->mx, m->my, m->mw, m->mh);
+- XMoveResizeWindow(dpy, m->barwin, m->wx, m->by, m->ww, bh);
++ XMoveResizeWindow(dpy, m->barwin, m->wx + sp, m->by + vp, m->ww - 2 * sp, bh);
+ }
+ focus(NULL);
+ arrange(NULL);
+_AT_@ -706,7 +708,7 @@ drawbar(Monitor *m)
+ if (m == selmon) { /* status is only drawn on selected monitor */
+ drw_setscheme(drw, scheme[SchemeNorm]);
+ tw = TEXTW(stext) - lrpad + 2; /* 2px right padding */
+- drw_text(drw, m->ww - tw, 0, tw, bh, 0, stext, 0);
++ drw_text(drw, m->ww - tw - 2 * sp, 0, tw, bh, 0, stext, 0);
+ }
+
+ for (c = m->clients; c; c = c->next) {
+_AT_@ -732,12 +734,12 @@ drawbar(Monitor *m)
+ if ((w = m->ww - tw - x) > bh) {
+ if (m->sel) {
+ drw_setscheme(drw, scheme[m == selmon ? SchemeSel : SchemeNorm]);
+- drw_text(drw, x, 0, w, bh, lrpad / 2, m->sel->name, 0);
++ drw_text(drw, x, 0, w - 2 * sp, bh, lrpad / 2, m->sel->name, 0);
+ if (m->sel->isfloating)
+ drw_rect(drw, x + boxs, boxs, boxw, boxw, m->sel->isfixed, 0);
+ } else {
+ drw_setscheme(drw, scheme[SchemeNorm]);
+- drw_rect(drw, x, 0, w, bh, 1, 1);
++ drw_rect(drw, x, 0, w - 2 * sp, bh, 1, 1);
+ }
+ }
+ drw_map(drw, m->barwin, 0, 0, m->ww, bh);
+_AT_@ -1547,7 +1549,10 @@ setup(void)
+ die("no fonts could be loaded.");
+ lrpad = drw->fonts->h;
+ bh = drw->fonts->h + 2;
++ sp = sidepad;
++ vp = (topbar == 1) ? vertpad : - vertpad;
+ updategeom();
++
+ /* init atoms */
+ utf8string = XInternAtom(dpy, "UTF8_STRING", False);
+ wmatom[WMProtocols] = XInternAtom(dpy, "WM_PROTOCOLS", False);
+_AT_@ -1704,7 +1709,7 @@ togglebar(const Arg *arg)
+ {
+ selmon->showbar = !selmon->showbar;
+ updatebarpos(selmon);
+- XMoveResizeWindow(dpy, selmon->barwin, selmon->wx, selmon->by, selmon->ww, bh);
++ XMoveResizeWindow(dpy, selmon->barwin, selmon->wx + sp, selmon->by + vp, selmon->ww - 2 * sp, bh);
+ arrange(selmon);
+ }
+
+_AT_@ -1814,7 +1819,7 @@ updatebars(void)
+ for (m = mons; m; m = m->next) {
+ if (m->barwin)
+ continue;
+- m->barwin = XCreateWindow(dpy, root, m->wx, m->by, m->ww, bh, 0, DefaultDepth(dpy, screen),
++ m->barwin = XCreateWindow(dpy, root, m->wx + sp, m->by + vp, m->ww - 2 * sp, bh, 0, DefaultDepth(dpy, screen),
+ CopyFromParent, DefaultVisual(dpy, screen),
+ CWOverrideRedirect|CWBackPixmap|CWEventMask, &wa);
+ XDefineCursor(dpy, m->barwin, cursor[CurNormal]->cursor);
+_AT_@ -1829,11 +1834,11 @@ updatebarpos(Monitor *m)
+ m->wy = m->my;
+ m->wh = m->mh;
+ if (m->showbar) {
+- m->wh -= bh;
+- m->by = m->topbar ? m->wy : m->wy + m->wh;
+- m->wy = m->topbar ? m->wy + bh : m->wy;
++ m->wh = m->wh - vertpad - bh;
++ m->by = m->topbar ? m->wy : m->wy + m->wh + vertpad;
++ m->wy = m->topbar ? m->wy + bh + vp : m->wy;
+ } else
+- m->by = -bh;
++ m->by = -bh - vp;
+ }
+
+ void
+--
+2.33.0
+
diff --git a/dwm.suckless.org/patches/barpadding/index.md b/dwm.suckless.org/patches/barpadding/index.md
index 34379187..efae6e76 100644
--- a/dwm.suckless.org/patches/barpadding/index.md
+++ b/dwm.suckless.org/patches/barpadding/index.md
_AT_@ -21,6 +21,7 @@ Download
 --------
 * [dwm-barpadding-6.2.diff](dwm-barpadding-6.2.diff) (2019-12-10)
 * [dwm-barpadding-20200720-bb2e722.diff](dwm-barpadding-20200720-bb2e722.diff) (2020-07-20)
+* [dwm-barpadding-20211020-a786211.diff](dwm-barpadding-20211020-a786211.diff) (2021-10-20)
 
 Author
 ------
Received on Wed Oct 20 2021 - 09:31:49 CEST

This archive was generated by hypermail 2.3.0 : Wed Oct 20 2021 - 09:36:49 CEST