dwm

Kris's build of dwm
git clone git clone https://git.krisyotam.com/krisyotam/dwm.git
Log | Files | Refs | README | LICENSE

bar_wintitle.c (2341B)


      1 int
      2 width_wintitle(Bar *bar, BarArg *a)
      3 {
      4 	return a->w;
      5 }
      6 
      7 int
      8 draw_wintitle(Bar *bar, BarArg *a)
      9 {
     10 	#if BAR_TITLE_LEFT_PAD_PATCH && BAR_TITLE_RIGHT_PAD_PATCH
     11 	int x = a->x + lrpad / 2, w = a->w - lrpad;
     12 	#elif BAR_TITLE_LEFT_PAD_PATCH
     13 	int x = a->x + lrpad / 2, w = a->w - lrpad / 2;
     14 	#elif BAR_TITLE_RIGHT_PAD_PATCH
     15 	int x = a->x, w = a->w - lrpad / 2;
     16 	#else
     17 	int x = a->x, w = a->w;
     18 	#endif // BAR_TITLE_LEFT_PAD_PATCH | BAR_TITLE_RIGHT_PAD_PATCH
     19 	Monitor *m = bar->mon;
     20 	Client *c = m->sel;
     21 
     22 	if (!c) {
     23 		drw_setscheme(drw, scheme[SchemeTitleNorm]);
     24 		drw_rect(drw, x, a->y, w, a->h, 1, 1);
     25 		return 0;
     26 	}
     27 
     28 	int tpad = lrpad / 2;
     29 	#if BAR_WINICON_PATCH
     30 	int ipad = c->icon ? c->icw + ICONSPACING : 0;
     31 	#endif // BAR_WINICON_PATCH
     32 	#if BAR_CENTEREDWINDOWNAME_PATCH
     33 	int cpad = 0;
     34 	#endif // BAR_CENTEREDWINDOWNAME_PATCH
     35 	int tx = x;
     36 	int tw = w;
     37 
     38 	drw_setscheme(drw, scheme[m == selmon ? SchemeTitleSel : SchemeTitleNorm]);
     39 	#if BAR_IGNORE_XFT_ERRORS_WHEN_DRAWING_TEXT_PATCH
     40 	XSetErrorHandler(xerrordummy);
     41 	#endif // BAR_IGNORE_XFT_ERRORS_WHEN_DRAWING_TEXT_PATCH
     42 
     43 	if (w <= TEXTW("A") - lrpad + tpad) // reduce text padding if wintitle is too small
     44 		tpad = (w - TEXTW("A") + lrpad < 0 ? 0 : (w - TEXTW("A") + lrpad) / 2);
     45 	#if BAR_WINICON_PATCH && BAR_CENTEREDWINDOWNAME_PATCH
     46 	else if (TEXTW(c->name) + ipad < w)
     47 		cpad = (w - TEXTW(c->name) - ipad) / 2;
     48 	#elif BAR_CENTEREDWINDOWNAME_PATCH
     49 	else if (TEXTW(c->name) < w)
     50 		cpad = (w - TEXTW(c->name)) / 2;
     51 	#endif // BAR_CENTEREDWINDOWNAME_PATCH
     52 
     53 	XSetForeground(drw->dpy, drw->gc, drw->scheme[ColBg].pixel);
     54 	XFillRectangle(drw->dpy, drw->drawable, drw->gc, x, a->y, w, a->h);
     55 
     56 	#if BAR_CENTEREDWINDOWNAME_PATCH
     57 	/* Apply center padding, if any */
     58 	tx += cpad;
     59 	tw -= cpad;
     60 	#endif // BAR_CENTEREDWINDOWNAME_PATCH
     61 
     62 	tx += tpad;
     63 	tw -= lrpad;
     64 
     65 	#if BAR_WINICON_PATCH
     66 	if (ipad) {
     67 		drw_pic(drw, tx, a->y + (a->h - c->ich) / 2, c->icw, c->ich, c->icon);
     68 		tx += ipad;
     69 		tw -= ipad;
     70 	}
     71 	#endif // BAR_WINICON_PATCH
     72 
     73 	drw_text(drw, tx, a->y, tw, a->h, 0, c->name, 0, False);
     74 
     75 	#if BAR_IGNORE_XFT_ERRORS_WHEN_DRAWING_TEXT_PATCH
     76 	XSync(dpy, False);
     77 	XSetErrorHandler(xerror);
     78 	#endif // BAR_IGNORE_XFT_ERRORS_WHEN_DRAWING_TEXT_PATCH
     79 	drawstateindicator(m, c, 1, x, a->y, w, a->h, 0, 0, c->isfixed);
     80 	return 1;
     81 }
     82 
     83 int
     84 click_wintitle(Bar *bar, Arg *arg, BarArg *a)
     85 {
     86 	return ClkWinTitle;
     87 }
     88