From d353bcd29683cb447130bf151fcaacfd349ec16a Mon Sep 17 00:00:00 2001 From: Saumit Dinesan Date: Wed, 9 Mar 2022 13:47:45 +0530 Subject: Adding patches --- patches/10.dwm-adjacenttag-skipvacant-6.2.diff | 161 +++++++++++++++++++++++++ 1 file changed, 161 insertions(+) create mode 100644 patches/10.dwm-adjacenttag-skipvacant-6.2.diff (limited to 'patches/10.dwm-adjacenttag-skipvacant-6.2.diff') diff --git a/patches/10.dwm-adjacenttag-skipvacant-6.2.diff b/patches/10.dwm-adjacenttag-skipvacant-6.2.diff new file mode 100644 index 0000000..6e39d71 --- /dev/null +++ b/patches/10.dwm-adjacenttag-skipvacant-6.2.diff @@ -0,0 +1,161 @@ +diff -up a/config.def.h b/config.def.h +--- a/config.def.h 2021-10-02 14:22:28.034782413 +0100 ++++ b/config.def.h 2021-10-02 14:22:28.044723532 +0100 +@@ -84,6 +84,10 @@ static Key keys[] = { + { MODKEY, XK_period, focusmon, {.i = +1 } }, + { MODKEY|ShiftMask, XK_comma, tagmon, {.i = -1 } }, + { MODKEY|ShiftMask, XK_period, tagmon, {.i = +1 } }, ++ { MODKEY, XK_Right, viewnext, {0} }, ++ { MODKEY, XK_Left, viewprev, {0} }, ++ { MODKEY|ShiftMask, XK_Right, tagtonext, {0} }, ++ { MODKEY|ShiftMask, XK_Left, tagtoprev, {0} }, + TAGKEYS( XK_1, 0) + TAGKEYS( XK_2, 1) + TAGKEYS( XK_3, 2) +diff -up a/dwm.c b/dwm.c +--- a/dwm.c 2021-10-02 14:22:28.034782413 +0100 ++++ b/dwm.c 2021-10-02 14:27:54.599845767 +0100 +@@ -183,8 +183,10 @@ static void maprequest(XEvent *e); + static void monocle(Monitor *m); + static void motionnotify(XEvent *e); + static void movemouse(const Arg *arg); ++static unsigned int nexttag(void); + static Client *nexttiled(Client *c); + static void pop(Client *); ++static unsigned int prevtag(void); + static void propertynotify(XEvent *e); + static void quit(const Arg *arg); + static Monitor *recttomon(int x, int y, int w, int h); +@@ -208,6 +210,8 @@ static void sigchld(int unused); + static void spawn(const Arg *arg); + static void tag(const Arg *arg); + static void tagmon(const Arg *arg); ++static void tagtonext(const Arg *arg); ++static void tagtoprev(const Arg *arg); + static void tile(Monitor *); + static void togglebar(const Arg *arg); + static void togglefloating(const Arg *arg); +@@ -227,6 +231,8 @@ static void updatetitle(Client *c); + static void updatewindowtype(Client *c); + static void updatewmhints(Client *c); + static void view(const Arg *arg); ++static void viewnext(const Arg *arg); ++static void viewprev(const Arg *arg); + static Client *wintoclient(Window w); + static Monitor *wintomon(Window w); + static int xerror(Display *dpy, XErrorEvent *ee); +@@ -1192,6 +1198,29 @@ movemouse(const Arg *arg) + } + } + ++unsigned int ++nexttag(void) ++{ ++ unsigned int seltag = selmon->tagset[selmon->seltags]; ++ unsigned int usedtags = 0; ++ Client *c = selmon->clients; ++ ++ if (!c) ++ return seltag; ++ ++ /* skip vacant tags */ ++ do { ++ usedtags |= c->tags; ++ c = c->next; ++ } while (c); ++ ++ do { ++ seltag = seltag == (1 << (LENGTH(tags) - 1)) ? 1 : seltag << 1; ++ } while (!(seltag & usedtags)); ++ ++ return seltag; ++} ++ + Client * + nexttiled(Client *c) + { +@@ -1208,6 +1237,28 @@ pop(Client *c) + arrange(c->mon); + } + ++unsigned int ++prevtag(void) ++{ ++ unsigned int seltag = selmon->tagset[selmon->seltags]; ++ unsigned int usedtags = 0; ++ Client *c = selmon->clients; ++ if (!c) ++ return seltag; ++ ++ /* skip vacant tags */ ++ do { ++ usedtags |= c->tags; ++ c = c->next; ++ } while (c); ++ ++ do { ++ seltag = seltag == 1 ? (1 << (LENGTH(tags) - 1)) : seltag >> 1; ++ } while (!(seltag & usedtags)); ++ ++ return seltag; ++} ++ + void + propertynotify(XEvent *e) + { +@@ -1671,6 +1722,36 @@ tagmon(const Arg *arg) + } + + void ++tagtonext(const Arg *arg) ++{ ++ unsigned int tmp; ++ ++ if (selmon->sel == NULL) ++ return; ++ ++ if ((tmp = nexttag()) == selmon->tagset[selmon->seltags]) ++ return; ++ ++ tag(&(const Arg){.ui = tmp }); ++ view(&(const Arg){.ui = tmp }); ++} ++ ++void ++tagtoprev(const Arg *arg) ++{ ++ unsigned int tmp; ++ ++ if (selmon->sel == NULL) ++ return; ++ ++ if ((tmp = prevtag()) == selmon->tagset[selmon->seltags]) ++ return; ++ ++ tag(&(const Arg){.ui = tmp }); ++ view(&(const Arg){.ui = tmp }); ++} ++ ++void + tile(Monitor *m) + { + unsigned int i, n, h, mw, my, ty; +@@ -2044,6 +2125,18 @@ view(const Arg *arg) + arrange(selmon); + } + ++void ++viewnext(const Arg *arg) ++{ ++ view(&(const Arg){.ui = nexttag()}); ++} ++ ++void ++viewprev(const Arg *arg) ++{ ++ view(&(const Arg){.ui = prevtag()}); ++} ++ + Client * + wintoclient(Window w) + { -- cgit v1.2.3