From 17501c9f28226b1f332d6842be0d7f50ba618a29 Mon Sep 17 00:00:00 2001
From: moonsabre <moonsabre@tuta.io>
Date: Fri, 14 Mar 2025 16:04:25 -0700
Subject: [PATCH] Bar title centering parameter.

---
 config.def.h | 1 +
 dwl.c        | 9 +++++++--
 2 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/config.def.h b/config.def.h
index 5d1dc2b..8ac3a8b 100644
--- a/config.def.h
+++ b/config.def.h
@@ -9,6 +9,7 @@ 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 centeredtitle             = 1; /* 1 means centered title */
 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..9eb816b 100644
--- a/dwl.c
+++ b/dwl.c
@@ -1551,9 +1551,14 @@ drawbar(Monitor *m)
 	if ((w = m->b.width - tw - x) > m->b.height) {
 		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);
+			tw = TEXTW(selmon, client_get_title(c));
+			drwl_text(m->drw, x, 0, w, m->b.height,
+		    		!centeredtitle || tw > w ? m->lrpad / 2 : (w - tw) / 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,
+					!centeredtitle || tw > w ? x + boxs : x + ((w - tw) / 2 - boxs * 8),
+					boxs, boxw, boxw, 0, 0);
 		} else {
 			drwl_setscheme(m->drw, colors[SchemeNorm]);
 			drwl_rect(m->drw, x, 0, w, m->b.height, 1, 1);
-- 
2.48.1

