From 4b5d30e4192ad507934aca816aaae5dd4d7c28e9 Mon Sep 17 00:00:00 2001 From: Jason Woofenden Date: Fri, 9 Mar 2018 10:41:09 -0500 Subject: [PATCH] topbar: minify workspace map --- drw.c | 14 ++++++++++++-- drw.h | 2 ++ dwm.c | 9 ++++----- 3 files changed, 18 insertions(+), 7 deletions(-) diff --git a/drw.c b/drw.c index b130405..ebdf8fe 100644 --- a/drw.c +++ b/drw.c @@ -141,6 +141,16 @@ drw_rect(Drw *drw, int x, int y, unsigned int w, unsigned int h, int filled, int void drw_text(Drw *drw, int x, int y, unsigned int w, unsigned int h, const char *text, int invert) { + _drw_text(drw, x, y, w, h, text, invert, 1); +} + +void +drw_text_nopad(Drw *drw, int x, int y, unsigned int w, unsigned int h, const char *text, int invert) { + _drw_text(drw, x, y, w, h, text, invert, 0); +} + +void +_drw_text(Drw *drw, int x, int y, unsigned int w, unsigned int h, const char *text, int invert, int pad) { char buf[256]; int i, tx, ty, th, len, olen; Extnts tex; @@ -155,9 +165,9 @@ drw_text(Drw *drw, int x, int y, unsigned int w, unsigned int h, const char *tex drw_font_getexts(drw->font, text, olen, &tex); th = drw->font->ascent + drw->font->descent; ty = y + (h / 2) - (th / 2) + drw->font->ascent; - tx = x + (h / 2); + tx = x + (h / 2) * pad; /* shorten text if necessary */ - for(len = MIN(olen, sizeof buf); len && (tex.w > w - tex.h || w < tex.h); len--) + for(len = MIN(olen, sizeof buf); len && (tex.w > w - tex.h * pad || w < tex.h * pad); len--) drw_font_getexts(drw->font, text, len, &tex); if(!len) return; diff --git a/drw.h b/drw.h index a5f34e0..cc0b769 100644 --- a/drw.h +++ b/drw.h @@ -64,6 +64,8 @@ void drw_setscheme(Drw *drw, ClrScheme *scheme); /* Drawing functions */ void drw_rect(Drw *drw, int x, int y, unsigned int w, unsigned int h, int filled, int empty, int invert); void drw_text(Drw *drw, int x, int y, unsigned int w, unsigned int h, const char *text, int invert); +void drw_text_nopad(Drw *drw, int x, int y, unsigned int w, unsigned int h, const char *text, int invert); +void _drw_text(Drw *drw, int x, int y, unsigned int w, unsigned int h, const char *text, int invert, int pad); /* Map functions */ void drw_map(Drw *drw, Window win, int x, int y, unsigned int w, unsigned int h); diff --git a/dwm.c b/dwm.c index b4c3411..3c911b0 100644 --- a/dwm.c +++ b/dwm.c @@ -55,7 +55,8 @@ #define WIDTH(X) ((X)->w + 2 * (X)->bw) #define HEIGHT(X) ((X)->h + 2 * (X)->bw) #define TAGMASK ((1 << LENGTH(tags)) - 1) -#define TEXTW(X) (drw_font_getexts_width(drw->font, X, strlen(X)) + drw->font->h) +#define TEXTW_NOPAD(X) drw_font_getexts_width(drw->font, X, strlen(X)) +#define TEXTW(X) (TEXTW_NOPAD(X) + drw->font->h) /* enums */ enum { CurNormal, CurResize, CurMove, CurLast }; /* cursor */ @@ -804,11 +805,9 @@ drawbar(Monitor *m) { } x = 0; for(i = 0; i < LENGTH(tags); i++) { - w = TEXTW(tags[i]); + w = TEXTW_NOPAD(tags[i]); drw_setscheme(drw, m->tagset[m->seltags] & 1 << i ? &scheme[SchemeSel] : &scheme[SchemeNorm]); - drw_text(drw, x, 0, w, bh, tags[i], urg & 1 << i); - drw_rect(drw, x, 0, w, bh, m == selmon && selmon->sel && selmon->sel->tags & 1 << i, - occ & 1 << i, urg & 1 << i); + drw_text_nopad(drw, x, 0, w, bh, tags[i], urg & 1 << i); x += w; } xx = x; -- 1.7.10.4