diff options
| author | TheSiahxyz <164138827+TheSiahxyz@users.noreply.github.com> | 2025-06-06 19:36:08 +0900 |
|---|---|---|
| committer | TheSiahxyz <164138827+TheSiahxyz@users.noreply.github.com> | 2025-06-06 19:36:08 +0900 |
| commit | 9605957bcdab78a9af8bb1e1a576c3ab50b81d12 (patch) | |
| tree | beef62ed1d41f22aedb0cd4e427885432d7bb6c5 /dwm | |
| parent | ca795e9ec7f360836b369fc2ba277ff89c90488e (diff) | |
modified dwm/config.def.h, modified dwm/dwm.c, created patches/dwm-alternativetags-6.3.diff, created patches/dwm-rainbowtags-6.2-alpha.diff
Diffstat (limited to 'dwm')
| -rw-r--r-- | dwm/config.def.h | 16 | ||||
| -rw-r--r-- | dwm/dwm.c | 43 | ||||
| -rw-r--r-- | dwm/patches/dwm-alternativetags-6.3.diff | 130 | ||||
| -rw-r--r-- | dwm/patches/dwm-rainbowtags-6.2-alpha.diff | 61 |
4 files changed, 247 insertions, 3 deletions
diff --git a/dwm/config.def.h b/dwm/config.def.h index f956c71..2ea4fed 100644 --- a/dwm/config.def.h +++ b/dwm/config.def.h @@ -118,6 +118,21 @@ static Sp scratchpads[] = { /* tagging */ static const char *tags[] = { "1", "2", "3", "4", "5", "6", "7", "8", "9" }; +static const char *tagsalt[] = { "", "", "", "", "", "", "", "", "" }; +static char *tagsel[][2] = { + { "#f8f8f2", "#005577" }, + { "#f8f8f2", "#005577" }, + { "#f8f8f2", "#005577" }, + { "#f8f8f2", "#005577" }, + { "#f8f8f2", "#005577" }, + { "#f8f8f2", "#005577" }, + { "#f8f8f2", "#005577" }, + { "#f8f8f2", "#005577" }, + { "#f8f8f2", "#005577" }, +}; + +static const unsigned int tagalpha[] = { OPAQUE, baralpha }; +static const int momentaryalttags = 0; /* 1 means alttags will show only when key is held down*/ static const char ptagf[] = "%s. %s"; /* format of a tag label */ static const char etagf[] = "%s"; /* format of an empty tag */ static const int taglbl = 0; /* 1 means enable tag label */ @@ -586,6 +601,7 @@ static Keychord *keychords[] = { &((Keychord){2, {{WINKEY, XK_t},{0, XK_p}}, togglescratch, {.ui = 1 } }), // calculator // &((Keychord){2, {{WINKEY, XK_t},{0, XK_q}}, toggleallowkill, {0} }), &((Keychord){2, {{WINKEY, XK_t},{0, XK_s}}, togglesticky, {0} }), + &((Keychord){2, {{WINKEY, XK_t},{0, XK_t}}, togglealttag, {0} }), &((Keychord){2, {{WINKEY, XK_t},{0, XK_apostrophe}}, togglemark, {0} }), &((Keychord){2, {{WINKEY, XK_t},{0, XK_space}}, togglealwaysontop, {0} }), &((Keychord){2, {{WINKEY, XK_t},{0, XK_Tab}}, toggleall, {0} }), @@ -182,6 +182,7 @@ struct Monitor { Monitor *next; Window barwin; const Layout *lt[2]; + unsigned int alttag; int ltcur; /* current layout */ Pertag *pertag; }; @@ -258,6 +259,7 @@ static void grabbuttons(Client *c, int focused); static void grabkeys(void); static void incnmaster(const Arg *arg); static void keypress(XEvent *e); +static void keyrelease(XEvent *e); static void killthis(Client *c); static void killclient(const Arg *arg); static void layoutmenu(const Arg *arg); @@ -323,6 +325,7 @@ static void tagmon(const Arg *arg); static void tagnthmon(const Arg *arg); static void toggleall(const Arg *arg); static void toggleallowkill(const Arg *arg); +static void togglealttag(const Arg *arg); static void togglealwaysontop(const Arg *arg); static void togglebar(const Arg *arg); static void togglebartags(const Arg *arg); @@ -397,6 +400,7 @@ static void (*handler[LASTEvent]) (XEvent *) = { [Expose] = expose, [FocusIn] = focusin, [KeyPress] = keypress, + [KeyRelease] = keyrelease, [MappingNotify] = mappingnotify, [MapRequest] = maprequest, [MotionNotify] = motionnotify, @@ -408,6 +412,7 @@ static int restart = 0; static int running = 1; static Cur *cursor[CurLast]; static Clr **scheme; +static Clr **tagscheme; static Display *dpy; static Drw *drw; static Monitor *mons, *selmon; @@ -1119,7 +1124,7 @@ numtomon(int num) void drawbar(Monitor *m) { - int x, w, tw = 0; + int x, w, wdelta, tw = 0; int boxs = drw->fonts->h / 9; int boxw = drw->fonts->h / 6 + 2; unsigned int i, occ = 0, urg = 0; @@ -1182,11 +1187,12 @@ drawbar(Monitor *m) snprintf(tagdisp, 64, etagf, tags[i]); masterclientontag[i] = tagdisp; tagw[i] = w = TEXTW(masterclientontag[i]); + wdelta = selmon->alttag ? abs(TEXTW(tags[i]) - TEXTW(tagsalt[i]) - 2) / 2 : 0; if (m == selmon) - drw_setscheme(drw, scheme[m->tagset[m->seltags] & 1 << i ? SchemeTagsSel : SchemeTagsNorm]); + drw_setscheme(drw, (m->tagset[m->seltags] & 1 << i ? tagscheme[i] : scheme[SchemeNorm])); else drw_setscheme(drw, scheme[m->tagset[m->seltags] & 1 << i ? SchemeInv : SchemeTagsNorm]); - drw_text(drw, x, 0, w, bh, lrpad / 2, masterclientontag[i], urg & 1 << i); + drw_text(drw, x, 0, w,(selmon->alttag ? bh + 2 : bh), wdelta + lrpad / 2, (selmon->alttag ? tagsalt[i] : masterclientontag[i]), urg & 1 << i); x += w; } } @@ -1645,6 +1651,25 @@ killthis(Client *c) { } void +keyrelease(XEvent *e) +{ + unsigned int i; + KeySym keysym; + XKeyEvent *ev; + + ev = &e->xkey; + keysym = XKeycodeToKeysym(dpy, (KeyCode)ev->keycode, 0); + + for (i = 0; i < LENGTH(keychords); i++) + if (momentaryalttags + && keychords[i]->func && keychords[i]->func == togglealttag + && selmon->alttag + && (keysym == keychords[i]->keys[currentkey].keysym + || CLEANMASK(keychords[i]->keys[currentkey].mod) == CLEANMASK(ev->state))) + keychords[i]->func(&(keychords[i]->arg)); +} + +void killclient(const Arg *arg) { Client *c; @@ -2704,9 +2729,14 @@ setup(void) cursor[CurResize] = drw_cur_create(drw, XC_sizing); cursor[CurMove] = drw_cur_create(drw, XC_fleur); /* init appearance */ + if (LENGTH(tags) > LENGTH(tagsel)) + die("too few color schemes for the tags"); scheme = ecalloc(LENGTH(colors), sizeof(Clr *)); for (i = 0; i < LENGTH(colors); i++) scheme[i] = drw_scm_create(drw, colors[i], alphas[i], 5); + tagscheme = ecalloc(LENGTH(tagsel), sizeof(Clr *)); + for (i = 0; i < LENGTH(tagsel); i++) + tagscheme[i] = drw_scm_create(drw, tagsel[i], tagalpha, 2); /* init bars */ updatebars(); updatestatus(); @@ -3018,6 +3048,13 @@ toggleall(const Arg *arg) } void +togglealttag(const Arg *arg) +{ + selmon->alttag = !selmon->alttag; + drawbar(selmon); +} + +void togglebar(const Arg *arg) { selmon->showbar = selmon->pertag->showbars[selmon->pertag->curtag] = !selmon->showbar; diff --git a/dwm/patches/dwm-alternativetags-6.3.diff b/dwm/patches/dwm-alternativetags-6.3.diff new file mode 100644 index 0000000..c881b00 --- /dev/null +++ b/dwm/patches/dwm-alternativetags-6.3.diff @@ -0,0 +1,130 @@ +From 937130c8ea4884f54eb71357bfa99233e6c3e556 Mon Sep 17 00:00:00 2001 +From: Tom Schwindl <schwindl@posteo.de> +Date: Sun, 18 Sep 2022 18:44:29 +0200 +Subject: [PATCH] 6.3 alternativetags patch + +--- + config.def.h | 3 +++ + dwm.c | 35 +++++++++++++++++++++++++++++++++-- + 2 files changed, 36 insertions(+), 2 deletions(-) + +diff --git a/config.def.h b/config.def.h +index 061ad662f82a..e912edd557cf 100644 +--- a/config.def.h ++++ b/config.def.h +@@ -20,6 +20,8 @@ static const char *colors[][3] = { + + /* tagging */ + static const char *tags[] = { "1", "2", "3", "4", "5", "6", "7", "8", "9" }; ++static const char *tagsalt[] = { "1", "2", "3", "4", "5", "6", "7", "8", "9" }; ++static const int momentaryalttags = 0; /* 1 means alttags will show only when key is held down*/ + + static const Rule rules[] = { + /* xprop(1): +@@ -84,6 +86,7 @@ static const Key keys[] = { + { MODKEY, XK_period, focusmon, {.i = +1 } }, + { MODKEY|ShiftMask, XK_comma, tagmon, {.i = -1 } }, + { MODKEY|ShiftMask, XK_period, tagmon, {.i = +1 } }, ++ { MODKEY, XK_n, togglealttag, {0} }, + TAGKEYS( XK_1, 0) + TAGKEYS( XK_2, 1) + TAGKEYS( XK_3, 2) +diff --git a/dwm.c b/dwm.c +index e5efb6a22806..12ff3f0768bc 100644 +--- a/dwm.c ++++ b/dwm.c +@@ -130,6 +130,7 @@ struct Monitor { + Monitor *next; + Window barwin; + const Layout *lt[2]; ++ unsigned int alttag; + }; + + typedef struct { +@@ -177,6 +178,7 @@ static void grabbuttons(Client *c, int focused); + static void grabkeys(void); + static void incnmaster(const Arg *arg); + static void keypress(XEvent *e); ++static void keyrelease(XEvent *e); + static void killclient(const Arg *arg); + static void manage(Window w, XWindowAttributes *wa); + static void mappingnotify(XEvent *e); +@@ -210,6 +212,7 @@ static void spawn(const Arg *arg); + static void tag(const Arg *arg); + static void tagmon(const Arg *arg); + static void tile(Monitor *); ++static void togglealttag(const Arg *arg); + static void togglebar(const Arg *arg); + static void togglefloating(const Arg *arg); + static void toggletag(const Arg *arg); +@@ -254,6 +257,7 @@ static void (*handler[LASTEvent]) (XEvent *) = { + [Expose] = expose, + [FocusIn] = focusin, + [KeyPress] = keypress, ++ [KeyRelease] = keyrelease, + [MappingNotify] = mappingnotify, + [MapRequest] = maprequest, + [MotionNotify] = motionnotify, +@@ -699,7 +703,7 @@ dirtomon(int dir) + void + drawbar(Monitor *m) + { +- int x, w, tw = 0; ++ int x, w, wdelta, tw = 0; + int boxs = drw->fonts->h / 9; + int boxw = drw->fonts->h / 6 + 2; + unsigned int i, occ = 0, urg = 0; +@@ -723,8 +727,9 @@ drawbar(Monitor *m) + x = 0; + for (i = 0; i < LENGTH(tags); i++) { + w = TEXTW(tags[i]); ++ wdelta = selmon->alttag ? abs(TEXTW(tags[i]) - TEXTW(tagsalt[i])) / 2 : 0; + drw_setscheme(drw, scheme[m->tagset[m->seltags] & 1 << i ? SchemeSel : SchemeNorm]); +- drw_text(drw, x, 0, w, bh, lrpad / 2, tags[i], urg & 1 << i); ++ drw_text(drw, x, 0, w, bh, wdelta + lrpad / 2, (selmon->alttag ? tagsalt[i] : tags[i]), urg & 1 << i); + if (occ & 1 << i) + drw_rect(drw, x + boxs, boxs, boxw, boxw, + m == selmon && selmon->sel && selmon->sel->tags & 1 << i, +@@ -1003,6 +1008,25 @@ keypress(XEvent *e) + keys[i].func(&(keys[i].arg)); + } + ++void ++keyrelease(XEvent *e) ++{ ++ unsigned int i; ++ KeySym keysym; ++ XKeyEvent *ev; ++ ++ ev = &e->xkey; ++ keysym = XKeycodeToKeysym(dpy, (KeyCode)ev->keycode, 0); ++ ++ for (i = 0; i < LENGTH(keys); i++) ++ if (momentaryalttags ++ && keys[i].func && keys[i].func == togglealttag ++ && selmon->alttag ++ && (keysym == keys[i].keysym ++ || CLEANMASK(keys[i].mod) == CLEANMASK(ev->state))) ++ keys[i].func(&(keys[i].arg)); ++} ++ + void + killclient(const Arg *arg) + { +@@ -1694,6 +1718,13 @@ tile(Monitor *m) + } + } + ++void ++togglealttag(const Arg *arg) ++{ ++ selmon->alttag = !selmon->alttag; ++ drawbar(selmon); ++} ++ + void + togglebar(const Arg *arg) + { +-- +2.37.3 + diff --git a/dwm/patches/dwm-rainbowtags-6.2-alpha.diff b/dwm/patches/dwm-rainbowtags-6.2-alpha.diff new file mode 100644 index 0000000..8701b19 --- /dev/null +++ b/dwm/patches/dwm-rainbowtags-6.2-alpha.diff @@ -0,0 +1,61 @@ +diff --git a/config.def.h b/config.def.h +index 1c0b587..80d0e6e 100644 +--- a/config.def.h ++++ b/config.def.h +@@ -21,6 +21,20 @@ static const char *colors[][3] = { + /* tagging */ + static const char *tags[] = { "1", "2", "3", "4", "5", "6", "7", "8", "9" }; + ++static const char *tagsel[][2] = { ++ { "#ffffff", "#ff0000" }, ++ { "#ffffff", "#ff7f00" }, ++ { "#000000", "#ffff00" }, ++ { "#000000", "#00ff00" }, ++ { "#ffffff", "#0000ff" }, ++ { "#ffffff", "#4b0082" }, ++ { "#ffffff", "#9400d3" }, ++ { "#000000", "#ffffff" }, ++ { "#ffffff", "#000000" }, ++}; ++ ++static const unsigned int tagalpha[] = { OPAQUE, baralpha }; ++ + static const Rule rules[] = { + /* xprop(1): + * WM_CLASS(STRING) = instance, class +diff --git a/dwm.c b/dwm.c +index b0b3466..23d1c46 100644 +--- a/dwm.c ++++ b/dwm.c +@@ -264,6 +264,7 @@ static Atom wmatom[WMLast], netatom[NetLast]; + static int running = 1; + static Cur *cursor[CurLast]; + static Clr **scheme; ++static Clr **tagscheme; + static Display *dpy; + static Drw *drw; + static Monitor *mons, *selmon; +@@ -717,7 +718,7 @@ drawbar(Monitor *m) + x = 0; + for (i = 0; i < LENGTH(tags); i++) { + w = TEXTW(tags[i]); +- drw_setscheme(drw, scheme[m->tagset[m->seltags] & 1 << i ? SchemeSel : SchemeNorm]); ++ drw_setscheme(drw, (m->tagset[m->seltags] & 1 << i ? tagscheme[i] : scheme[SchemeNorm])); + drw_text(drw, x, 0, w, bh, lrpad / 2, tags[i], urg & 1 << i); + if (occ & 1 << i) + drw_rect(drw, x + boxs, boxs, boxw, boxw, +@@ -1568,9 +1569,14 @@ setup(void) + cursor[CurResize] = drw_cur_create(drw, XC_sizing); + cursor[CurMove] = drw_cur_create(drw, XC_fleur); + /* init appearance */ ++ if (LENGTH(tags) > LENGTH(tagsel)) ++ die("too few color schemes for the tags"); + scheme = ecalloc(LENGTH(colors), sizeof(Clr *)); + for (i = 0; i < LENGTH(colors); i++) + scheme[i] = drw_scm_create(drw, colors[i], 3); ++ tagscheme = ecalloc(LENGTH(tagsel), sizeof(Clr *)); ++ for (i = 0; i < LENGTH(tagsel); i++) ++ tagscheme[i] = drw_scm_create(drw, tagsel[i], tagalpha, 2); + /* init bars */ + updatebars(); + updatestatus(); |
