Center window names in status bar.
authorAaron Taylor <ataylor@subgeniuskitty.com>
Fri, 3 Feb 2023 00:15:46 +0000 (16:15 -0800)
committerAaron Taylor <ataylor@subgeniuskitty.com>
Fri, 3 Feb 2023 00:15:46 +0000 (16:15 -0800)
dwm.c

diff --git a/dwm.c b/dwm.c
index e5efb6a..a507385 100644 (file)
--- a/dwm.c
+++ b/dwm.c
@@ -737,8 +737,12 @@ drawbar(Monitor *m)
 
        if ((w = m->ww - tw - x) > bh) {
                if (m->sel) {
 
        if ((w = m->ww - tw - x) > bh) {
                if (m->sel) {
+            /* fix overflow when window name is bigger than window width */
+                       int mid = (m->ww - (int)TEXTW(m->sel->name)) / 2 - x;
+                       /* make sure name will not overlap on tags even when it is very long */
+                       mid = mid >= lrpad / 2 ? mid : lrpad / 2;
                        drw_setscheme(drw, scheme[m == selmon ? SchemeSel : SchemeNorm]);
                        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, bh, mid, m->sel->name, 0);
                        if (m->sel->isfloating)
                                drw_rect(drw, x + boxs, boxs, boxw, boxw, m->sel->isfixed, 0);
                } else {
                        if (m->sel->isfloating)
                                drw_rect(drw, x + boxs, boxs, boxw, boxw, m->sel->isfixed, 0);
                } else {