From 36b574eff68239db35df97035118b614cc79d307 Mon Sep 17 00:00:00 2001 From: SalahDin Rezk Date: Thu, 4 Apr 2024 16:51:13 +0200 Subject: [PATCH] Add bar padding smart patch (#419) --- dwm.c | 23 +++++++++++++++++++++++ patches.def.h | 6 ++++++ 2 files changed, 29 insertions(+) diff --git a/dwm.c b/dwm.c index 543b721..927f253 100644 --- a/dwm.c +++ b/dwm.c @@ -1108,6 +1108,11 @@ arrange(Monitor *m) void arrangemon(Monitor *m) { + #if BAR_PADDING_SMART_PATCH + updatebarpos(selmon); + for (Bar *bar = selmon->bar; bar; bar = bar->next) + XMoveResizeWindow(dpy, bar->win, bar->bx, bar->by, bar->bw, bar->bh); + #endif // BAR_PADDING_SMART_PATCH #if TAB_PATCH updatebarpos(m); XMoveResizeWindow(dpy, m->tabwin, m->wx, m->ty, m->ww, th); @@ -4664,12 +4669,30 @@ updatebarpos(Monitor *m) if (enablegaps) #endif // PERTAG_VANITYGAPS_PATCH { + #if BAR_PADDING_SMART_PATCH + unsigned int n; Client *c; + for (n = 0, c = nexttiled(m->clients); c; c = nexttiled(c->next), n++); + if (n > 1) { + y_pad = gappoh; + x_pad = gappov; + } + #else y_pad = gappoh; x_pad = gappov; + #endif // BAR_PADDING_SMART_PATCH } #elif BAR_PADDING_PATCH + #if BAR_PADDING_SMART_PATCH + unsigned int n; Client *c; + for (n = 0, c = nexttiled(m->clients); c; c = nexttiled(c->next), n++); + if (n > 1) { + y_pad = vertpad; + x_pad = sidepad; + } + #else y_pad = vertpad; x_pad = sidepad; + #endif // BAR_PADDING_SMART_PATCH #endif // BAR_PADDING_PATCH | BAR_PADDING_VANITYGAPS_PATCH #if INSETS_PATCH diff --git a/patches.def.h b/patches.def.h index 968eb75..1af92cf 100644 --- a/patches.def.h +++ b/patches.def.h @@ -369,6 +369,12 @@ */ #define BAR_PADDING_VANITYGAPS_PATCH 0 +/* Smart bar padding patch that automatically adjusts the padding when there is + * only one client on the monitor. Works well with vanitygaps and barpadding + * patches. + */ +#define BAR_PADDING_SMART_PATCH 0 + /* This patch adds simple markup for status messages using pango markup. * This depends on the pango library v1.44 or greater. * You need to uncomment the corresponding lines in config.mk to use the pango libraries