sites

public wiki contents of suckless.org
git clone git://git.suckless.org/sites
Log | Files | Refs

commit 5a626059e826442070c3c05a9c87d88341de8722
parent ac0a00b264307cd9a154eed3c2159c305a5d48d6
Author: Ivan Tham <pickfire@riseup.net>
Date:   Sat, 26 Sep 2015 22:47:33 +0800

[dwm][fancybarclickable] Fix spaces

Diffstat:
Mdwm.suckless.org/patches/dwm-6.1-fancybarclickable.diff | 221+++++++++++++++++++++++++++++++++++++++----------------------------------------
1 file changed, 110 insertions(+), 111 deletions(-)

diff --git a/dwm.suckless.org/patches/dwm-6.1-fancybarclickable.diff b/dwm.suckless.org/patches/dwm-6.1-fancybarclickable.diff @@ -6,7 +6,7 @@ index 875885b..05865bb 100644 /* click event mask button function argument */ { ClkLtSymbol, 0, Button1, setlayout, {0} }, { ClkLtSymbol, 0, Button3, setlayout, {.v = &layouts[2]} }, -+ { ClkWinTitle, 0, Button1, focusonclick, {0} }, ++ { ClkWinTitle, 0, Button1, focusonclick, {0} }, { ClkWinTitle, 0, Button2, zoom, {0} }, { ClkStatusText, 0, Button2, spawn, {.v = termcmd } }, { ClkClientWin, MODKEY, Button1, movemouse, {0} }, @@ -18,8 +18,8 @@ index f896170..cc2a4f2 100644 Monitor *next; Window barwin; const Layout *lt[2]; -+ int titlebarbegin; -+ int titlebarend; ++ int titlebarbegin; ++ int titlebarend; }; typedef struct { @@ -44,9 +44,9 @@ index f896170..cc2a4f2 100644 click = ClkStatusText; - else + else { -+ arg.ui = ev->x; ++ arg.ui = ev->x; click = ClkWinTitle; -+ } ++ } } else if((c = wintoclient(ev->window))) { focus(c); @@ -67,13 +67,13 @@ index f896170..cc2a4f2 100644 - unsigned int i, occ = 0, urg = 0; - Client *c; + int x, xx, w, ow, mw = 0, extra, tw, a = 0, s = 0; -+ char posbuf[10]; ++ char posbuf[10]; + unsigned int i, occ = 0, urg = 0, n = 0; + Client *c, *firstvis, *lastvis = NULL; for(c = m->clients; c; c = c->next) { -+ if(ISVISIBLE(c)) -+ n++; ++ if(ISVISIBLE(c)) ++ n++; occ |= c->tags; if(c->isurgent) urg |= c->tags; @@ -82,36 +82,35 @@ index f896170..cc2a4f2 100644 xx = x; if(m == selmon) { /* status is only drawn on selected monitor */ - w = TEXTW(stext); -+ if(m->lt[m->sellt]->arrange == monocle){ -+ x = xx; -+ for(c = nexttiled(m->clients), a = 0, s = 0; c; c = nexttiled(c->next), a++) { -+ if(c == m->stack) -+ s = a; -+ } -+ if(!s && a) -+ s = a; -+ snprintf(posbuf, LENGTH(posbuf), "[%d/%d]", s, a); -+ w = TEXTW(posbuf); -+ drw_text(drw, x, 0, w, bh, posbuf, 0); -+ xx = x + w; -+ } ++ if(m->lt[m->sellt]->arrange == monocle){ ++ x = xx; ++ for(c = nexttiled(m->clients), a = 0, s = 0; c; c = nexttiled(c->next), a++) { ++ if(c == m->stack) ++ s = a; ++ } ++ if(!s && a) ++ s = a; ++ snprintf(posbuf, LENGTH(posbuf), "[%d/%d]", s, a); ++ w = TEXTW(posbuf); ++ drw_text(drw, x, 0, w, bh, posbuf, 0); ++ xx = x + w; ++ } + -+ /* -+ char *buf = stext, *ptr = buf; -+ while (*ptr) { -+ for (i = 0; *ptr < 0; i++, ptr++); -+ w 2+= drw_font_getexts_width(drw->font, buf, i); -+ w += TEXTW(buf); -+ buf=++ptr; -+ }*/ -+ w = TEXTW(stext); ++ /* char *buf = stext, *ptr = buf; ++ while (*ptr) { ++ for (i = 0; *ptr < 0; i++, ptr++); ++ w 2+= drw_font_getexts_width(drw->font, buf, i); ++ w += TEXTW(buf); ++ buf=++ptr; ++ } */ ++ w = TEXTW(stext); + x = m->ww - w; if(x < xx) { x = xx; w = m->ww - xx; } -+ m->titlebarend=x; ++ m->titlebarend=x; drw_text(drw, x, 0, w, bh, stext, 0); } - else @@ -125,72 +124,72 @@ index f896170..cc2a4f2 100644 - drw_rect(drw, x, 0, w, bh, m->sel->isfixed, m->sel->isfloating, 0); - } - else { -+ m->titlebarbegin=x; -+ } -+ for(c = m->clients; c && !ISVISIBLE(c); c = c->next); -+ firstvis = c; ++ m->titlebarbegin=x; ++ } ++ for(c = m->clients; c && !ISVISIBLE(c); c = c->next); ++ firstvis = c; + -+ drw_setscheme(drw, m == selmon ? &scheme[SchemeSel] : &scheme[SchemeNorm]); -+ w = x - xx; -+ x = xx; ++ drw_setscheme(drw, m == selmon ? &scheme[SchemeSel] : &scheme[SchemeNorm]); ++ w = x - xx; ++ x = xx; + -+ if(n > 0) { -+ mw = w / n; -+ extra = 0; -+ i = 0; ++ if(n > 0) { ++ mw = w / n; ++ extra = 0; ++ i = 0; + -+ while(c) { -+ lastvis = c; -+ tw = TEXTW(c->name); -+ if(tw < mw) extra += (mw - tw); else i++; -+ for(c = c->next; c && !ISVISIBLE(c); c = c->next); -+ } ++ while(c) { ++ lastvis = c; ++ tw = TEXTW(c->name); ++ if(tw < mw) extra += (mw - tw); else i++; ++ for(c = c->next; c && !ISVISIBLE(c); c = c->next); ++ } + -+ if(i > 0) mw += extra / i; ++ if(i > 0) mw += extra / i; + -+ c = firstvis; -+ xx = x; -+ } -+ m->titlebarbegin=x; -+ while(w > bh) { -+ if(c) { -+ ow = w; -+ tw = TEXTW(c->name); -+ w = MIN(ow, tw); ++ c = firstvis; ++ xx = x; ++ } ++ m->titlebarbegin=x; ++ while(w > bh) { ++ if(c) { ++ ow = w; ++ tw = TEXTW(c->name); ++ w = MIN(ow, tw); + -+ if(w > mw) w = mw; -+ if(c == lastvis) w = ow; ++ if(w > mw) w = mw; ++ if(c == lastvis) w = ow; + -+ drw_text(drw, x, 0, w, bh, c->name, False); -+ if(c != firstvis) drawline(x, 0); -+ drw_rect(drw, x, 0, w, bh, m->sel->isfixed, m->sel->isfloating, True); ++ drw_text(drw, x, 0, w, bh, c->name, False); ++ if(c != firstvis) drawline(x, 0); ++ drw_rect(drw, x, 0, w, bh, m->sel->isfixed, m->sel->isfloating, True); + -+ x += w; -+ w = ow - w; -+ for(c = c->next; c && !ISVISIBLE(c); c = c->next); ++ x += w; ++ w = ow - w; ++ for(c = c->next; c && !ISVISIBLE(c); c = c->next); + } else { drw_setscheme(drw, &scheme[SchemeNorm]); drw_text(drw, x, 0, w, bh, NULL, 0); -+ break; ++ break; } } + -+ if(m == selmon && m->sel && ISVISIBLE(m->sel)) { -+ drw_text(drw, x, 0, w, bh, m->sel->name, True); -+ drw_rect(drw, x, 0, w, bh, m->sel->isfixed, m->sel->isfloating, True); -+ } ++ if(m == selmon && m->sel && ISVISIBLE(m->sel)) { ++ drw_text(drw, x, 0, w, bh, m->sel->name, True); ++ drw_rect(drw, x, 0, w, bh, m->sel->isfixed, m->sel->isfloating, True); ++ } + drw_map(drw, m->barwin, 0, 0, m->ww, bh); } void +drawline(int x, int y) { -+ XGCValues gcv; ++ XGCValues gcv; + -+ gcv.foreground = drw->scheme->fg->rgb; ++ gcv.foreground = drw->scheme->fg->rgb; + -+ XChangeGC(dpy, drw->gc, GCForeground, &gcv); -+ XDrawLine(dpy, drw->drawable, drw->gc, x, y, x, y + (drw->font->ascent + drw->font->descent + 2)); ++ XChangeGC(dpy, drw->gc, GCForeground, &gcv); ++ XDrawLine(dpy, drw->drawable, drw->gc, x, y, x, y + (drw->font->ascent + drw->font->descent + 2)); +} + +void @@ -202,47 +201,47 @@ index f896170..cc2a4f2 100644 void +focusonclick(const Arg *arg) { -+ int x, w, mw = 0, tw, n = 0, i = 0, extra = 0; -+ Monitor *m = selmon; -+ Client *c, *firstvis; ++ int x, w, mw = 0, tw, n = 0, i = 0, extra = 0; ++ Monitor *m = selmon; ++ Client *c, *firstvis; + -+ for(c = m->clients; c && !ISVISIBLE(c); c = c->next); -+ firstvis = c; ++ for(c = m->clients; c && !ISVISIBLE(c); c = c->next); ++ firstvis = c; + -+ for(c = m->clients; c; c = c->next) -+ if (ISVISIBLE(c)) -+ n++; ++ for(c = m->clients; c; c = c->next) ++ if (ISVISIBLE(c)) ++ n++; + -+ if(n > 0) { -+ mw = (m->titlebarend - m->titlebarbegin) / n; -+ c = firstvis; -+ while(c) { -+ tw = TEXTW(c->name); -+ if(tw < mw) extra += (mw - tw); else i++; -+ for(c = c->next; c && !ISVISIBLE(c); c = c->next); -+ } -+ if(i > 0) mw += extra / i; -+ } ++ if(n > 0) { ++ mw = (m->titlebarend - m->titlebarbegin) / n; ++ c = firstvis; ++ while(c) { ++ tw = TEXTW(c->name); ++ if(tw < mw) extra += (mw - tw); else i++; ++ for(c = c->next; c && !ISVISIBLE(c); c = c->next); ++ } ++ if(i > 0) mw += extra / i; ++ } + -+ x=m->titlebarbegin; ++ x=m->titlebarbegin; + -+ c = firstvis; -+ while(x < m->titlebarend) { -+ if(c) { -+ w=MIN(TEXTW(c->name), mw); -+ if (x < arg->i && x+w > arg->i) { -+ focus(c); -+ restack(selmon); -+ break; -+ } else { -+ x+=w; -+ } ++ c = firstvis; ++ while(x < m->titlebarend) { ++ if(c) { ++ w=MIN(TEXTW(c->name), mw); ++ if (x < arg->i && x+w > arg->i) { ++ focus(c); ++ restack(selmon); ++ break; ++ } else { ++ x+=w; ++ } + -+ for(c = c->next; c && !ISVISIBLE(c); c = c->next); -+ } else { -+ break; -+ } -+ } ++ for(c = c->next; c && !ISVISIBLE(c); c = c->next); ++ } else { ++ break; ++ } ++ } +} + +void @@ -255,7 +254,7 @@ index f896170..cc2a4f2 100644 updatetitle(c); - if(c == c->mon->sel) - drawbar(c->mon); -+ drawbar(c->mon); ++ drawbar(c->mon); } if(ev->atom == netatom[NetWMWindowType]) updatewindowtype(c);