From 06bd052f3ff90e81e86082f2041ff44f48068ffd Mon Sep 17 00:00:00 2001 From: wochap Date: Fri, 8 Mar 2024 13:26:54 -0500 Subject: [PATCH] reintroduce movestack --- _STALE_PATCHES/movestack.md | 14 ------- movestack/movestack.patch | 79 +++++++++++++++++++++++++++++++++++++ 2 files changed, 79 insertions(+), 14 deletions(-) delete mode 100644 _STALE_PATCHES/movestack.md create mode 100644 movestack/movestack.patch diff --git a/_STALE_PATCHES/movestack.md b/_STALE_PATCHES/movestack.md deleted file mode 100644 index b9386a9..0000000 --- a/_STALE_PATCHES/movestack.md +++ /dev/null @@ -1,14 +0,0 @@ -### Description -Allows you to move a window up and down the stack. - -### Download -- [2023-09-05](https://github.com/djpohly/dwl/compare/main...NikitaIvanovV:movestack.patch) -- [2023-06-21](https://github.com/djpohly/dwl/compare/main...Abanoub8:movestack.patch) -- [v0.4](https://github.com/djpohly/dwl/compare/main...dm1tz:04-movestack.patch) -- [2022-01-16](https://github.com/djpohly/dwl/compare/main...ss7m:movestack.patch) - -### Authors -- [sam-barr](https://github.com/ss7m) -- [Dmitry Zakharchenko](https://github.com/dm1tz) -- [Abanoub8](https://github.com/Abanoub8) -- [Nikita Ivanov](https://github.com/NikitaIvanovV) diff --git a/movestack/movestack.patch b/movestack/movestack.patch new file mode 100644 index 0000000..37bed7d --- /dev/null +++ b/movestack/movestack.patch @@ -0,0 +1,79 @@ +From b051f50233033b399db324b29ab24227257ac141 Mon Sep 17 00:00:00 2001 +From: wochap +Date: Tue, 5 Mar 2024 23:31:51 -0500 +Subject: [PATCH] apply NikitaIvanovV movestack patch + +source: https://github.com/djpohly/dwl/wiki/movestack +--- + config.def.h | 2 ++ + dwl.c | 35 +++++++++++++++++++++++++++++++++++ + 2 files changed, 37 insertions(+) + +diff --git a/config.def.h b/config.def.h +index db0babc..778a0dc 100644 +--- a/config.def.h ++++ b/config.def.h +@@ -122,6 +122,8 @@ static const Key keys[] = { + { MODKEY|WLR_MODIFIER_SHIFT, XKB_KEY_Return, spawn, {.v = termcmd} }, + { MODKEY, XKB_KEY_j, focusstack, {.i = +1} }, + { MODKEY, XKB_KEY_k, focusstack, {.i = -1} }, ++ { MODKEY|WLR_MODIFIER_SHIFT, XKB_KEY_J, movestack, {.i = +1} }, ++ { MODKEY|WLR_MODIFIER_SHIFT, XKB_KEY_K, movestack, {.i = -1} }, + { MODKEY, XKB_KEY_i, incnmaster, {.i = +1} }, + { MODKEY, XKB_KEY_d, incnmaster, {.i = -1} }, + { MODKEY, XKB_KEY_h, setmfact, {.f = -0.05} }, +diff --git a/dwl.c b/dwl.c +index ef27a1d..69b9756 100644 +--- a/dwl.c ++++ b/dwl.c +@@ -279,6 +279,7 @@ static void maplayersurfacenotify(struct wl_listener *listener, void *data); + static void mapnotify(struct wl_listener *listener, void *data); + static void maximizenotify(struct wl_listener *listener, void *data); + static void monocle(Monitor *m); ++static void movestack(const Arg *arg); + static void motionabsolute(struct wl_listener *listener, void *data); + static void motionnotify(uint32_t time); + static void motionrelative(struct wl_listener *listener, void *data); +@@ -1603,6 +1604,40 @@ monocle(Monitor *m) + wlr_scene_node_raise_to_top(&c->scene->node); + } + ++void ++movestack(const Arg *arg) ++{ ++ Client *c, *sel = focustop(selmon); ++ ++ if (!sel) { ++ return; ++ } ++ ++ if (wl_list_length(&clients) <= 1) { ++ return; ++ } ++ ++ if (arg->i > 0) { ++ wl_list_for_each(c, &sel->link, link) { ++ if (VISIBLEON(c, selmon) || &c->link == &clients) { ++ break; /* found it */ ++ } ++ } ++ } else { ++ wl_list_for_each_reverse(c, &sel->link, link) { ++ if (VISIBLEON(c, selmon) || &c->link == &clients) { ++ break; /* found it */ ++ } ++ } ++ /* backup one client */ ++ c = wl_container_of(c->link.prev, c, link); ++ } ++ ++ wl_list_remove(&sel->link); ++ wl_list_insert(&c->link, &sel->link); ++ arrange(selmon); ++} ++ + void + motionabsolute(struct wl_listener *listener, void *data) + { +-- +2.42.0