Guest User

drawbar

a guest
Oct 6th, 2022
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.74 KB | None | 0 0
  1. void
  2. drawbar(Monitor *m)
  3. {
  4. int x, w, tw = 0, n = 0, scm;
  5. int boxs = drw->fonts->h / 9;
  6. int boxw = drw->fonts->h / 6 + 2;
  7. unsigned int i, occ = 0, urg = 0;
  8. Client *c;
  9.  
  10. if (!m->showbar)
  11. return;
  12.  
  13. /* draw status first so it can be overdrawn by tags later */
  14. if (m == selmon || 1) { /* status is only drawn on selected monitor */
  15. tw = statusw = m->ww - drawstatusbar(m, bh, stext);
  16. }
  17.  
  18. for (c = m->clients; c; c = c->next) {
  19. if (ISVISIBLE(c))
  20. n++;
  21. occ |= c->tags;
  22. if (c->isurgent)
  23. urg |= c->tags;
  24. }
  25. x = 0;
  26. for (i = 0; i < LENGTH(tags); i++) {
  27. /* Do not draw vacant tags */
  28. if(!(occ & 1 << i || m->tagset[m->seltags] & 1 << i))
  29. continue;
  30. w = TEXTW(tags[i]);
  31. drw_setscheme(drw, scheme[m->tagset[m->seltags] & 1 << i ? SchemeSel : SchemeNorm]);
  32. drw_text(drw, x, 0, w - 2 * sp, bh, lrpad / 2, tags[i], urg & 1 << i);
  33. x += w;
  34. }
  35. w = TEXTW(m->ltsymbol);
  36. drw_setscheme(drw, scheme[SchemeNorm]);
  37. x = drw_text(drw, x, 0, w - 2 * sp, bh, lrpad / 2, m->ltsymbol, 0);
  38.  
  39. if ((w = m->ww - tw - x) > bh) {
  40. if (n > 0) {
  41. int remainder = w % n;
  42. int tabw = (1.0 / (double)n) * w + 1;
  43. for (c = m->clients; c; c = c->next) {
  44. if (!ISVISIBLE(c))
  45. continue;
  46. if (m->sel == c)
  47. scm = SchemeSel;
  48. else if (HIDDEN(c))
  49. scm = SchemeHid;
  50. else
  51. scm = SchemeNorm;
  52. drw_setscheme(drw, scheme[scm]);
  53.  
  54. if (remainder >= 0) {
  55. if (remainder == 0) {
  56. tabw--;
  57. }
  58. remainder--;
  59. }
  60. drw_text(drw, x, 0, tabw - 2 * sp, bh, lrpad / 2, c->name, 0);
  61. x += tabw;
  62. }
  63. } else {
  64. drw_setscheme(drw, scheme[SchemeNorm]);
  65. drw_rect(drw, x, 0, w - 2 * sp, bh, 1, 1);
  66. }
  67. }
  68. m->bt = n;
  69. m->btw = w;
  70. drw_map(drw, m->barwin, 0, 0, m->ww, bh);
  71. }
  72.  
Advertisement
Add Comment
Please, Sign In to add comment