diff options
author | tsxv478 <vt0451@yandex.ru> | 2023-01-10 00:43:18 +0300 |
---|---|---|
committer | tsxv478 <vt0451@yandex.ru> | 2023-01-10 00:43:18 +0300 |
commit | db6d84374aeee755bb0feeb6707a3be3c1c5f7f1 (patch) | |
tree | f2b32310e65cf59ad3210a5430fbdf8d6ead6c6d | |
parent | 801d168c98a17852ca2b06c09194d6b0e3d84ac0 (diff) |
shiftview
-rw-r--r-- | config.def.h | 2 | ||||
-rw-r--r-- | dwm.c | 16 |
2 files changed, 18 insertions, 0 deletions
diff --git a/config.def.h b/config.def.h index 2ce9af2..ca100bd 100644 --- a/config.def.h +++ b/config.def.h @@ -89,6 +89,8 @@ static Key keys[] = { { MODKEY, XK_space, spawn, {.v = termcmd } }, { MODKEY|ShiftMask, XK_equal, incnmaster, {.i = +1 } }, { MODKEY|ShiftMask, XK_minus, incnmaster, {.i = -1 } }, + { MODKEY, XK_l, shiftview, {.i = +1 } }, + { MODKEY, XK_h, shiftview, {.i = -1 } }, { MODKEY|ShiftMask, XK_h, setmfact, {.f = -0.05} }, { MODKEY|ShiftMask, XK_l, setmfact, {.f = +0.05} }, { MODKEY, XK_Return, zoom, {0} }, @@ -254,6 +254,7 @@ static void updatetitle(Client *c); static void updatewindowtype(Client *c); static void updatewmhints(Client *c); static void view(const Arg *arg); +static void shiftview(const Arg *arg); static Client *wintoclient(Window w); static Monitor *wintomon(Window w); static int xerror(Display *dpy, XErrorEvent *ee); @@ -2399,6 +2400,21 @@ view(const Arg *arg) arrange(selmon); } +void +shiftview(const Arg *arg) { + Arg shifted; + + if(arg->i > 0) // left circular shift + shifted.ui = (selmon->tagset[selmon->seltags] << arg->i) + | (selmon->tagset[selmon->seltags] >> (LENGTH(tags) - arg->i)); + + else // right circular shift + shifted.ui = selmon->tagset[selmon->seltags] >> (- arg->i) + | selmon->tagset[selmon->seltags] << (LENGTH(tags) + arg->i); + + view(&shifted); +} + pid_t winpid(Window w) { |