diff config/dwm/patches/dwm-bardwmlogo-6.6.diff @ 3:84d6074a5566

Fix: forgot to hg add
author Yasuri <yasuri@charliesmp.net>
date Sat, 03 Oct 2026 19:15:32 -0500
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/config/dwm/patches/dwm-bardwmlogo-6.6.diff	Sat Oct 03 19:15:32 2026 -0500
@@ -0,0 +1,98 @@
+From c0e147bf031f9c2638e2c192a97e2d200e4b74be Mon Sep 17 00:00:00 2001
+From: Rizqi Nur Assyaufi <bandithijo@gmail.com>
+Date: Fri, 15 Aug 2025 20:49:26 +0800
+Subject: [PATCH] Add DWM logo on left bar before tags
+
+This patch adds a DWM logo to the left side of the status bar, positioned
+before the tags, for aesthetic or branding purposes.
+
+Defines a fixed logo width (`dwmlogowdth = 54`) and adjusts tag rendering to
+prevent overlap.
+
+Uses multiple `drw_rect()` calls to render a pixel-art style "dwm" logo using
+rectangles.
+
+This patch is purely visual and does not impact DWM's core functionality or
+performance. It may appeal to users who want a more personalized or distinctive
+appearance for their window manager.
+
+---
+ dwm.c | 34 +++++++++++++++++++++++++++++++++-
+ 1 file changed, 33 insertions(+), 1 deletion(-)
+
+diff --git a/dwm.c b/dwm.c
+index 1443802..c9b2858 100644
+--- a/dwm.c
++++ b/dwm.c
+@@ -140,6 +140,10 @@ typedef struct {
+ 	int monitor;
+ } Rule;
+ 
++typedef struct {
++	int x, y, w, h;
++} DwmLogo;
++
+ /* function declarations */
+ static void applyrules(Client *c);
+ static int applysizehints(Client *c, int *x, int *y, int *w, int *h, int interact);
+@@ -240,6 +244,7 @@ static int screen;
+ static int sw, sh;           /* X display screen geometry width, height */
+ static int bh;               /* bar height */
+ static int lrpad;            /* sum of left and right padding for text */
++static int dwmlogowdth = 54; /* dwm logo width */
+ static int (*xerrorxlib)(Display *, XErrorEvent *);
+ static unsigned int numlockmask = 0;
+ static void (*handler[LASTEvent]) (XEvent *) = {
+@@ -432,6 +437,7 @@ buttonpress(XEvent *e)
+ 	}
+ 	if (ev->window == selmon->barwin) {
+ 		i = x = 0;
++		x = dwmlogowdth; /* dwm logo width */
+ 		do
+ 			x += TEXTW(tags[i]);
+ 		while (ev->x >= x && ++i < LENGTH(tags));
+@@ -698,6 +704,7 @@ void
+ drawbar(Monitor *m)
+ {
+ 	int x, w, tw = 0;
++	int stroke = 4, letterHeight = bh - 4;
+ 	int boxs = drw->fonts->h / 9;
+ 	int boxw = drw->fonts->h / 6 + 2;
+ 	unsigned int i, occ = 0, urg = 0;
+@@ -718,7 +725,32 @@ drawbar(Monitor *m)
+ 		if (c->isurgent)
+ 			urg |= c->tags;
+ 	}
+-	x = 0;
++
++	/* use colored scheme for visibility */
++	drw_setscheme(drw, scheme[SchemeNorm]);
++
++	/* draw dark background for logo */
++	drw_rect(drw, 0, 0, dwmlogowdth, bh, 1, 1);
++
++	/* draw dwm logo */
++	const DwmLogo dwmLogo[] = {
++		{  0,  9, stroke, letterHeight / 2 }, /* d: left vertical */
++		{  0, 15,     35, stroke           }, /* d: bottom horizontal */
++		{ 13,  1, stroke, letterHeight     }, /* d: right vertical */
++		{  0,  7,     15, stroke           }, /* d: top horizontal */
++		{ 22,  7, stroke, letterHeight / 2 }, /* w: center vertical */
++		{ 31,  7, stroke, letterHeight / 2 }, /* w: right vertical */
++		{ 31,  7,     22, stroke           }, /* m: top horizontal */
++		{ 40, 11, stroke, letterHeight / 2 }, /* m: center vertical */
++		{ 49, 11, stroke, letterHeight / 2 }  /* m: right vertical */
++	};
++
++	for (int i = 0; i < LENGTH(dwmLogo); i++) {
++		drw_rect(drw, dwmLogo[i].x, dwmLogo[i].y, dwmLogo[i].w, dwmLogo[i].h, 1, 0);
++	}
++
++	/* start drawing tags after logo */
++	x = dwmlogowdth;
+ 	for (i = 0; i < LENGTH(tags); i++) {
+ 		w = TEXTW(tags[i]);
+ 		drw_setscheme(drw, scheme[m->tagset[m->seltags] & 1 << i ? SchemeSel : SchemeNorm]);
+-- 
+2.50.1
+