sites

public wiki contents of suckless.org
git clone git://git.suckless.org/sites
Log | Files | Refs

commit ca1e493c376ff086f0a0ffbd1ef78459902bb5d2
parent d93e2d94081806ab161def5d60fbd1c415b94eb4
Author: Paul Baldaray <paulbaldaray@gmail.com>
Date:   Sat,  1 Aug 2020 06:11:25 -0700

[dwm][patch][reorganizetags] add reorganizetags patch

Diffstat:
Adwm.suckless.org/patches/reorganizetags/dwm-reorganizetags-6.2.diff | 58++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Adwm.suckless.org/patches/reorganizetags/index.md | 22++++++++++++++++++++++
2 files changed, 80 insertions(+), 0 deletions(-)

diff --git a/dwm.suckless.org/patches/reorganizetags/dwm-reorganizetags-6.2.diff b/dwm.suckless.org/patches/reorganizetags/dwm-reorganizetags-6.2.diff @@ -0,0 +1,58 @@ +diff --git a/config.def.h b/config.def.h +index 1c0b587..961a189 100644 +--- a/config.def.h ++++ b/config.def.h +@@ -70,6 +70,7 @@ static Key keys[] = { + { MODKEY, XK_d, incnmaster, {.i = -1 } }, + { MODKEY, XK_h, setmfact, {.f = -0.05} }, + { MODKEY, XK_l, setmfact, {.f = +0.05} }, ++ { MODKEY, XK_r, reorganizetags, {0} }, + { MODKEY, XK_Return, zoom, {0} }, + { MODKEY, XK_Tab, view, {0} }, + { MODKEY|ShiftMask, XK_c, killclient, {0} }, +diff --git a/dwm.c b/dwm.c +index 4465af1..723d675 100644 +--- a/dwm.c ++++ b/dwm.c +@@ -188,6 +188,7 @@ static void pop(Client *); + static void propertynotify(XEvent *e); + static void quit(const Arg *arg); + static Monitor *recttomon(int x, int y, int w, int h); ++static void reorganizetags(const Arg *arg); + static void resize(Client *c, int x, int y, int w, int h, int interact); + static void resizeclient(Client *c, int x, int y, int w, int h); + static void resizemouse(const Arg *arg); +@@ -1265,6 +1266,33 @@ recttomon(int x, int y, int w, int h) + return r; + } + ++void ++reorganizetags(const Arg *arg) { ++ Client *c; ++ unsigned int occ, unocc, i; ++ unsigned int tagdest[LENGTH(tags)]; ++ ++ occ = 0; ++ for (c = selmon->clients; c; c = c->next) ++ occ |= (1 << (ffs(c->tags)-1)); ++ unocc = 0; ++ for (i = 0; i < LENGTH(tags); ++i) { ++ while (unocc < i && (occ & (1 << unocc))) ++ unocc++; ++ if (occ & (1 << i)) { ++ tagdest[i] = unocc; ++ occ &= ~(1 << i); ++ occ |= 1 << unocc; ++ } ++ } ++ ++ for (c = selmon->clients; c; c = c->next) ++ c->tags = 1 << tagdest[ffs(c->tags)-1]; ++ if (selmon->sel) ++ selmon->tagset[selmon->seltags] = selmon->sel->tags; ++ arrange(selmon); ++} ++ + void + resize(Client *c, int x, int y, int w, int h, int interact) + { diff --git a/dwm.suckless.org/patches/reorganizetags/index.md b/dwm.suckless.org/patches/reorganizetags/index.md @@ -0,0 +1,22 @@ +reorganizetags +============== + +Description +----------- + +Shifts all clients per tag to leftmost unoccupied tags. + +For example, if clients A, B, C are tagged on tags 1, 5, 9 respectively, when +this function is called, they will now be on 1, 2, and 3. The focused client +will also remain focused. + +Clients on multiple tags will be treated as if they only were only on their +leftmost tag, and will be reduced to one tag after the operation is complete. + +Download +-------- +* [dwm-reorganizetags-6.2.diff](dwm-reorganizetags-6.2.diff) + +Authors +------- +* Paul Baldaray - <paulbaldaray@gmail.com>