Advertisement
Guest User

Untitled

a guest
Apr 8th, 2012
113
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.33 KB | None | 0 0
  1. Dwm - Google style-bar
  2. =========================
  3.  
  4.  
  5. static void drawbar(Monitor *m);
  6. + static void drawborder(unsigned long col[ColLast]);
  7.  
  8. void
  9. drawbar(Monitor *m) {
  10. int x;
  11. unsigned int i, occ = 0, urg = 0;
  12. - unsigned long *col;
  13. + unsigned long *col, *ltcol;
  14. Client *c;
  15.  
  16. for(c = m->clients; c; c = c->next) {
  17. occ |= c->tags;
  18. if(c->isurgent) urg |= c->tags;
  19. }
  20. dc.x = 0;
  21. + dc.w = m->ww;
  22. + drawborder(dc.colors[0]);
  23. // draw tag names
  24. for(i = 0; i < LENGTH(tags); i++) {
  25. dc.w = TEXTW(tags[i]);
  26. col = m->tagset[m->seltags] & 1 << i ? dc.colors[1] : dc.colors[0];
  27. + ltcol = occ & 1 << i || m->tagset[m->seltags] & 1 << i ? dc.colors[0] : dc.colors[2];
  28. + drawtext(tags[i], ltcol, urg & 1 << i);
  29. + drawborder(col);
  30. dc.x += dc.w;
  31. XCopyArea(dpy, dc.drawable, m->barwin, dc.gc, 0, 0, m->ww, bh, 0, 0);
  32. XSync(dpy, False);
  33. }
  34. +
  35. + void
  36. + drawborder(unsigned long col[ColLast]){
  37. + XGCValues gcv;
  38. + XRectangle r = {dc.x, dc.y, dc.w, 2 };
  39. +
  40. + gcv.foreground = col[ColBorder];
  41. + XChangeGC(dpy, dc.gc, GCForeground, &gcv);
  42. + XFillRectangles(dpy, dc.drawable, dc.gc, &r, 1);
  43. + }
  44.  
  45. void
  46. setup(void) {
  47. XSetWindowAttributes wa;
  48.  
  49. /* clean up any zombies immediately */
  50. sigchld(0);
  51.  
  52. /* init screen */
  53. screen = DefaultScreen(dpy);
  54. root = RootWindow(dpy, screen);
  55. initfont(font);
  56. sw = DisplayWidth(dpy, screen);
  57. sh = DisplayHeight(dpy, screen);
  58. - bh = dc.h = dc.font.height + 2;
  59. + bh = dc.h = dc.font.height + 6;
  60.  
  61. }
  62.  
  63. void
  64. drawtext(const char *text, unsigned long col[ColLast], Bool invert) {
  65. char buf[256];
  66.  
  67. olen = strlen(text);
  68. h = dc.font.ascent + dc.font.descent;
  69. - y = dc.y + (dc.h / 2) - (h / 2) + dc.font.ascent;
  70. + y = dc.y + 2 (dc.h / 2) - (h / 2) + dc.font.ascent;
  71. x = dc.x + (h / 2);
  72. /* shorten text if necessary */
  73. for(len = MIN(olen, sizeof buf); len && textnw(text, len) > dc.w - h; len--);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement