dwm-bardwmlogo-6.5.diff - sites - public wiki contents of suckless.org
 (HTM) git clone git://git.suckless.org/sites
 (DIR) Log
 (DIR) Files
 (DIR) Refs
       ---
       dwm-bardwmlogo-6.5.diff (2985B)
       ---
            1 From 22f1116ed0d9a499a73394eb42f1e0d51fd4f2fc Mon Sep 17 00:00:00 2001
            2 From: Rizqi Nur Assyaufi <bandithijo@gmail.com>
            3 Date: Tue, 24 Jun 2025 22:56:04 +0800
            4 Subject: [PATCH] Add DWM logo on left bar before tags
            5 
            6 This patch add dwm logo before tags on the left side of the status bar for
            7 aesthetic or branding purposes.
            8 
            9 The logo renders using several ractangels to form the characters "dwm" in a
           10 pixel-art style.
           11 ---
           12  dwm.c | 34 +++++++++++++++++++++++++++++++++-
           13  1 file changed, 33 insertions(+), 1 deletion(-)
           14 
           15 diff --git a/dwm.c b/dwm.c
           16 index f1d86b2..0bef187 100644
           17 --- a/dwm.c
           18 +++ b/dwm.c
           19 @@ -141,6 +141,10 @@ typedef struct {
           20          int monitor;
           21  } Rule;
           22  
           23 +typedef struct {
           24 +        int x, y, w, h;
           25 +} DwmLogo;
           26 +
           27  /* function declarations */
           28  static void applyrules(Client *c);
           29  static int applysizehints(Client *c, int *x, int *y, int *w, int *h, int interact);
           30 @@ -241,6 +245,7 @@ static int screen;
           31  static int sw, sh;           /* X display screen geometry width, height */
           32  static int bh;               /* bar height */
           33  static int lrpad;            /* sum of left and right padding for text */
           34 +static int dwmlogowdth = 54; /* dwm logo width */
           35  static int (*xerrorxlib)(Display *, XErrorEvent *);
           36  static unsigned int numlockmask = 0;
           37  static void (*handler[LASTEvent]) (XEvent *) = {
           38 @@ -433,6 +438,7 @@ buttonpress(XEvent *e)
           39          }
           40          if (ev->window == selmon->barwin) {
           41                  i = x = 0;
           42 +                x = dwmlogowdth; /* dwm logo width */
           43                  do
           44                          x += TEXTW(tags[i]);
           45                  while (ev->x >= x && ++i < LENGTH(tags));
           46 @@ -699,6 +705,7 @@ void
           47  drawbar(Monitor *m)
           48  {
           49          int x, w, tw = 0;
           50 +        int stroke = 4, letterHeight = bh - 4;
           51          int boxs = drw->fonts->h / 9;
           52          int boxw = drw->fonts->h / 6 + 2;
           53          unsigned int i, occ = 0, urg = 0;
           54 @@ -719,7 +726,32 @@ drawbar(Monitor *m)
           55                  if (c->isurgent)
           56                          urg |= c->tags;
           57          }
           58 -        x = 0;
           59 +
           60 +        /* use colored scheme for visibility */
           61 +        drw_setscheme(drw, scheme[SchemeNorm]);
           62 +
           63 +        /* draw dark background for logo */
           64 +        drw_rect(drw, 0, 0, dwmlogowdth, bh, 1, 1);
           65 +
           66 +        /* draw dwm logo */
           67 +        const DwmLogo dwmLogo[] = {
           68 +                {  0,  9, stroke, letterHeight / 2 }, /* d: left vertical */
           69 +                {  0, 15,     35, stroke           }, /* d: bottom horizontal */
           70 +                { 13,  1, stroke, letterHeight     }, /* d: right vertical */
           71 +                {  0,  7,     15, stroke           }, /* d: top horizontal */
           72 +                { 22,  7, stroke, letterHeight / 2 }, /* w: center vertical */
           73 +                { 31,  7, stroke, letterHeight / 2 }, /* w: right vertical */
           74 +                { 31,  7,     22, stroke           }, /* m: top horizontal */
           75 +                { 40, 11, stroke, letterHeight / 2 }, /* m: center vertical */
           76 +                { 49, 11, stroke, letterHeight / 2 }  /* m: right vertical */
           77 +        };
           78 +
           79 +        for (int i = 0; i < LENGTH(dwmLogo); i++) {
           80 +                drw_rect(drw, dwmLogo[i].x, dwmLogo[i].y, dwmLogo[i].w, dwmLogo[i].h, 1, 0);
           81 +        }
           82 +
           83 +        /* start drawing tags after logo */
           84 +        x = dwmlogowdth;
           85          for (i = 0; i < LENGTH(tags); i++) {
           86                  w = TEXTW(tags[i]);
           87                  drw_setscheme(drw, scheme[m->tagset[m->seltags] & 1 << i ? SchemeSel : SchemeNorm]);
           88 -- 
           89 2.50.0
           90