X-Git-Url: https://git.danieliu.xyz/?a=blobdiff_plain;f=bar.c;h=3027bc2a4d09c1fb56173481da542079c1f12b7b;hb=91a1f6926e2594156219c1caaf4729c5d86498a5;hp=17db8cdba0340119cbeedc371ce817528da1aa54;hpb=586f66331d1105be03c42e6faeae1672b974a98a;p=dwm.git diff --git a/bar.c b/bar.c index 17db8cd..3027bc2 100644 --- a/bar.c +++ b/bar.c @@ -3,26 +3,52 @@ * See LICENSE file for license details. */ -#include "wm.h" +#include "dwm.h" -static const char *status[] = { - "sh", "-c", "echo -n `date` `uptime | sed 's/.*://; s/,//g'`" - " `acpi | awk '{print $4}' | sed 's/,//'`", 0 \ -}; +void +barclick(XButtonPressedEvent *e) +{ + int x = 0; + Arg a; + for(a.i = 0; a.i < TLast; a.i++) { + x += textw(tags[a.i]) + dc.font.height; + if(e->x < x) { + view(&a); + return; + } + } +} void draw_bar() { - static char buf[1024]; + int i, modw; + char *mode = arrange == tiling ? "#" : "~"; + + dc.x = dc.y = 0; + dc.w = bw; + drawtext(NULL, False, False); - buf[0] = 0; - pipe_spawn(buf, sizeof(buf), dpy, (char **)status); + modw = textw(mode) + dc.font.height; + dc.w = 0; + for(i = 0; i < TLast; i++) { + dc.x += dc.w; + dc.w = textw(tags[i]) + dc.font.height; + drawtext(tags[i], i == tsel, True); + } + if(sel) { + dc.x += dc.w; + dc.w = textw(sel->name) + dc.font.height; + drawtext(sel->name, True, True); + } + dc.w = textw(stext) + dc.font.height; + dc.x = bx + bw - dc.w - modw; + drawtext(stext, False, False); - brush.rect = barrect; - brush.rect.x = brush.rect.y = 0; - draw(dpy, &brush, False, buf); + dc.x = bx + bw - modw; + dc.w = modw; + drawtext(mode, True, True); - XCopyArea(dpy, brush.drawable, barwin, brush.gc, 0, 0, barrect.width, - barrect.height, 0, 0); + XCopyArea(dpy, dc.drawable, barwin, dc.gc, 0, 0, bw, bh, 0, 0); XFlush(dpy); }