From f01cea73042155e856b2f41452724fe5c895eee4 Mon Sep 17 00:00:00 2001
From: sewn <sewn@disroot.org>
Date: Fri, 23 Aug 2024 09:59:03 +0300
Subject: [PATCH] add vertical and horizontal spacing to bar

https://dwm.suckless.org/patches/barpadding/
---
 config.def.h |  2 ++
 dwl.c        | 14 +++++++-------
 2 files changed, 9 insertions(+), 7 deletions(-)

diff --git a/config.def.h b/config.def.h
index 5d1dc2b..756b1ae 100644
--- a/config.def.h
+++ b/config.def.h
@@ -9,6 +9,8 @@ static const int bypass_surface_visibility = 0;  /* 1 means idle inhibitors will
 static const unsigned int borderpx         = 1;  /* border pixel of windows */
 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 float rootcolor[]             = COLOR(0x000000ff);
 /* This conforms to the xdg-protocol. Set the alpha to zero to restore the old behavior */
diff --git a/dwl.c b/dwl.c
index ece537a..380549a 100644
--- a/dwl.c
+++ b/dwl.c
@@ -598,8 +598,8 @@ arrangelayers(Monitor *m)
 		return;
 
 	if (m->scene_buffer->node.enabled) {
-		usable_area.height -= m->b.real_height;
-		usable_area.y += topbar ? m->b.real_height : 0;
+		usable_area.height -= m->b.real_height + vertpad;
+		usable_area.y += topbar ? m->b.real_height + vertpad : 0;
 	}
 
 	/* Arrange exclusive surfaces from top->bottom */
@@ -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 - sidepad) * selmon->wlr_output->scale;
 			do
 				x += TEXTW(selmon, tags[i]);
 			while (cx >= x && ++i < LENGTH(tags));
@@ -1562,8 +1562,8 @@ drawbar(Monitor *m)
 
 	wlr_scene_buffer_set_dest_size(m->scene_buffer,
 		m->b.real_width, m->b.real_height);
-	wlr_scene_node_set_position(&m->scene_buffer->node, m->m.x,
-		m->m.y + (topbar ? 0 : m->m.height - m->b.real_height));
+	wlr_scene_node_set_position(&m->scene_buffer->node, m->m.x + sidepad,
+		m->m.y + (topbar ? vertpad : m->m.height - m->b.real_height - vertpad));
 	wlr_scene_buffer_set_buffer(m->scene_buffer, &buf->base);
 	wlr_buffer_unlock(&buf->base);
 }
@@ -3162,8 +3162,8 @@ updatebar(Monitor *m)
 	char fontattrs[12];
 
 	wlr_output_transformed_resolution(m->wlr_output, &rw, &rh);
-	m->b.width = rw;
-	m->b.real_width = (int)((float)m->b.width / m->wlr_output->scale);
+	m->b.width = rw - (2 * sidepad);
+	m->b.real_width = (int)((float)rw / m->wlr_output->scale) - (2 * sidepad);
 
 	wlr_scene_node_set_enabled(&m->scene_buffer->node, m->wlr_output->enabled ? showbar : 0);
 
-- 
2.46.0

