summaryrefslogtreecommitdiffstats
path: root/dwl-patches/patches/barborder/barborder.patch
diff options
context:
space:
mode:
Diffstat (limited to 'dwl-patches/patches/barborder/barborder.patch')
-rw-r--r--dwl-patches/patches/barborder/barborder.patch136
1 files changed, 136 insertions, 0 deletions
diff --git a/dwl-patches/patches/barborder/barborder.patch b/dwl-patches/patches/barborder/barborder.patch
new file mode 100644
index 0000000..106a2ac
--- /dev/null
+++ b/dwl-patches/patches/barborder/barborder.patch
@@ -0,0 +1,136 @@
+From 7d95ce0fba8f172748bbd71b4c03ce12acd54eea Mon Sep 17 00:00:00 2001
+From: sewn <sewn@disroot.org>
+Date: Fri, 23 Aug 2024 14:11:37 +0300
+Subject: [PATCH] add border to bar
+
+---
+ config.def.h | 3 ++-
+ dwl.c | 32 +++++++++++++++++++-------------
+ 2 files changed, 21 insertions(+), 14 deletions(-)
+
+diff --git a/config.def.h b/config.def.h
+index 5d1dc2b..4763482 100644
+--- a/config.def.h
++++ b/config.def.h
+@@ -6,7 +6,7 @@
+ /* appearance */
+ static const int sloppyfocus = 1; /* focus follows mouse */
+ static const int bypass_surface_visibility = 0; /* 1 means idle inhibitors will disable idle tracking even if it's surface isn't visible */
+-static const unsigned int borderpx = 1; /* border pixel of windows */
++static const unsigned int borderpx = 1; /* border pixel of windows & bar */
+ static const int showbar = 1; /* 0 means no bar */
+ static const int topbar = 1; /* 0 means bottom bar */
+ static const char *fonts[] = {"monospace:size=10"};
+@@ -18,6 +18,7 @@ static uint32_t colors[][3] = {
+ [SchemeNorm] = { 0xbbbbbbff, 0x222222ff, 0x444444ff },
+ [SchemeSel] = { 0xeeeeeeff, 0x005577ff, 0x005577ff },
+ [SchemeUrg] = { 0, 0, 0x770000ff },
++ [SchemeBar] = { 0, 0, 0x557700ff },
+ };
+
+ /* tagging - TAGCOUNT must be no greater than 31 */
+diff --git a/dwl.c b/dwl.c
+index ece537a..c637da4 100644
+--- a/dwl.c
++++ b/dwl.c
+@@ -85,7 +85,7 @@
+ #define TEXTW(mon, text) (drwl_font_getwidth(mon->drw, text) + mon->lrpad)
+
+ /* enums */
+-enum { SchemeNorm, SchemeSel, SchemeUrg }; /* color schemes */
++enum { SchemeNorm, SchemeSel, SchemeUrg, SchemeBar }; /* color schemes */
+ enum { CurNormal, CurPressed, CurMove, CurResize }; /* cursor */
+ enum { XDGShell, LayerShell, X11 }; /* client types */
+ enum { LyrBg, LyrBottom, LyrTile, LyrFloat, LyrTop, LyrFS, LyrOverlay, LyrBlock, NUM_LAYERS }; /* scene layers */
+@@ -750,7 +750,7 @@ buttonpress(struct wl_listener *listener, void *data)
+ if (!c && !exclusive_focus &&
+ (node = wlr_scene_node_at(&layers[LyrBottom]->node, cursor->x, cursor->y, NULL, NULL)) &&
+ (buffer = wlr_scene_buffer_from_node(node)) && buffer == selmon->scene_buffer) {
+- cx = (cursor->x - selmon->m.x) * selmon->wlr_output->scale;
++ cx = (cursor->x - selmon->m.x - borderpx) * selmon->wlr_output->scale;
+ do
+ x += TEXTW(selmon, tags[i]);
+ while (cx >= x && ++i < LENGTH(tags));
+@@ -1506,10 +1506,12 @@ dirtomon(enum wlr_direction dir)
+ void
+ drawbar(Monitor *m)
+ {
+- int x, w, tw = 0;
++ int x, y = borderpx, w, tw = 0;
++ int mh = m->b.height - borderpx * 2, mw = m->b.width - borderpx * 2;
+ int boxs = m->drw->font->height / 9;
+ int boxw = m->drw->font->height / 6 + 2;
+ uint32_t i, occ = 0, urg = 0;
++ uint32_t borderscm[] = { colors[SchemeBar][ColBorder] };
+ Client *c;
+ Buffer *buf;
+
+@@ -1518,11 +1520,15 @@ drawbar(Monitor *m)
+ if (!(buf = bufmon(m)))
+ return;
+
++ drwl_setscheme(m->drw, borderscm);
++ drwl_rect(m->drw, 0, 0, m->b.width, m->b.height, 1, 0);
++ drwl_setscheme(m->drw, colors[SchemeNorm]);
++
+ /* draw status first so it can be overdrawn by tags later */
+ if (m == selmon) { /* status is only drawn on selected monitor */
+ drwl_setscheme(m->drw, colors[SchemeNorm]);
+ tw = TEXTW(m, stext) - m->lrpad + 2; /* 2px right padding */
+- drwl_text(m->drw, m->b.width - tw, 0, tw, m->b.height, 0, stext, 0);
++ drwl_text(m->drw, borderpx + mw - tw, y, tw, mh, 0, stext, 0);
+ }
+
+ wl_list_for_each(c, &clients, link) {
+@@ -1532,31 +1538,31 @@ drawbar(Monitor *m)
+ if (c->isurgent)
+ urg |= c->tags;
+ }
+- x = 0;
++ x = borderpx;
+ c = focustop(m);
+ for (i = 0; i < LENGTH(tags); i++) {
+ w = TEXTW(m, tags[i]);
+ drwl_setscheme(m->drw, colors[m->tagset[m->seltags] & 1 << i ? SchemeSel : SchemeNorm]);
+- drwl_text(m->drw, x, 0, w, m->b.height, m->lrpad / 2, tags[i], urg & 1 << i);
++ drwl_text(m->drw, x, y, w, mh, m->lrpad / 2, tags[i], urg & 1 << i);
+ if (occ & 1 << i)
+- drwl_rect(m->drw, x + boxs, boxs, boxw, boxw,
++ drwl_rect(m->drw, x + boxs, y + boxs, boxw, boxw,
+ m == selmon && c && c->tags & 1 << i,
+ urg & 1 << i);
+ x += w;
+ }
+ w = TEXTW(m, m->ltsymbol);
+ drwl_setscheme(m->drw, colors[SchemeNorm]);
+- x = drwl_text(m->drw, x, 0, w, m->b.height, m->lrpad / 2, m->ltsymbol, 0);
++ x = drwl_text(m->drw, x, y, w, mh, m->lrpad / 2, m->ltsymbol, 0);
+
+- if ((w = m->b.width - tw - x) > m->b.height) {
++ if ((w = mw - tw - x + borderpx) > mh) {
+ if (c) {
+ drwl_setscheme(m->drw, colors[m == selmon ? SchemeSel : SchemeNorm]);
+- drwl_text(m->drw, x, 0, w, m->b.height, m->lrpad / 2, client_get_title(c), 0);
++ drwl_text(m->drw, x, y, w, mh, m->lrpad / 2, client_get_title(c), 0);
+ if (c && c->isfloating)
+- drwl_rect(m->drw, x + boxs, boxs, boxw, boxw, 0, 0);
++ drwl_rect(m->drw, x + boxs, y + boxs, boxw, boxw, 0, 0);
+ } else {
+ drwl_setscheme(m->drw, colors[SchemeNorm]);
+- drwl_rect(m->drw, x, 0, w, m->b.height, 1, 1);
++ drwl_rect(m->drw, x, y, w, mh, 1, 1);
+ }
+ }
+
+@@ -3183,7 +3189,7 @@ updatebar(Monitor *m)
+
+ m->b.scale = m->wlr_output->scale;
+ m->lrpad = m->drw->font->height;
+- m->b.height = m->drw->font->height + 2;
++ m->b.height = m->drw->font->height + 2 + borderpx * 2;
+ m->b.real_height = (int)((float)m->b.height / m->wlr_output->scale);
+ }
+
+--
+2.46.0
+