Introduction
Introduction Statistics Contact Development Disclaimer Help
dwm-movestack-20211115-a786211.diff - sites - public wiki contents of suckless.…
git clone git://git.suckless.org/sites
Log
Files
Refs
---
dwm-movestack-20211115-a786211.diff (3374B)
---
1 From 9a4037dc0ef56f91c009317e78e9e3790dafbb58 Mon Sep 17 00:00:00 2001
2 From: BrunoCooper17 <[email protected]>
3 Date: Mon, 15 Nov 2021 14:04:53 -0600
4 Subject: [PATCH] MoveStack patch
5
6 This plugin allows you to move clients around in the stack and swap them
7 with the master. It emulates the behavior off mod+shift+j and mod+shift+…
8 in Xmonad. movestack(+1) will swap the client with the current focus wit…
9 the next client. movestack(-1) will swap the client with the current foc…
10 with the previous client.
11 ---
12 config.def.h | 3 +++
13 movestack.c | 48 ++++++++++++++++++++++++++++++++++++++++++++++++
14 2 files changed, 51 insertions(+)
15 create mode 100644 movestack.c
16
17 diff --git a/config.def.h b/config.def.h
18 index a2ac963..33efa5b 100644
19 --- a/config.def.h
20 +++ b/config.def.h
21 @@ -60,6 +60,7 @@ static char dmenumon[2] = "0"; /* component of dmenucm…
22 static const char *dmenucmd[] = { "dmenu_run", "-m", dmenumon, "-fn", d…
23 static const char *termcmd[] = { "st", NULL };
24
25 +#include "movestack.c"
26 static Key keys[] = {
27 /* modifier key function argu…
28 { MODKEY, XK_p, spawn, {.v …
29 @@ -71,6 +72,8 @@ static Key keys[] = {
30 { MODKEY, XK_d, incnmaster, {.i …
31 { MODKEY, XK_h, setmfact, {.f …
32 { MODKEY, XK_l, setmfact, {.f …
33 + { MODKEY|ShiftMask, XK_j, movestack, {.i …
34 + { MODKEY|ShiftMask, XK_k, movestack, {.i …
35 { MODKEY, XK_Return, zoom, {0} …
36 { MODKEY, XK_Tab, view, {0} …
37 { MODKEY|ShiftMask, XK_c, killclient, {0} …
38 diff --git a/movestack.c b/movestack.c
39 new file mode 100644
40 index 0000000..520f4ae
41 --- /dev/null
42 +++ b/movestack.c
43 @@ -0,0 +1,48 @@
44 +void
45 +movestack(const Arg *arg) {
46 + Client *c = NULL, *p = NULL, *pc = NULL, *i;
47 +
48 + if(arg->i > 0) {
49 + /* find the client after selmon->sel */
50 + for(c = selmon->sel->next; c && (!ISVISIBLE(c) || c->is…
51 + if(!c)
52 + for(c = selmon->clients; c && (!ISVISIBLE(c) ||…
53 +
54 + }
55 + else {
56 + /* find the client before selmon->sel */
57 + for(i = selmon->clients; i != selmon->sel; i = i->next)
58 + if(ISVISIBLE(i) && !i->isfloating)
59 + c = i;
60 + if(!c)
61 + for(; i; i = i->next)
62 + if(ISVISIBLE(i) && !i->isfloating)
63 + c = i;
64 + }
65 + /* find the client before selmon->sel and c */
66 + for(i = selmon->clients; i && (!p || !pc); i = i->next) {
67 + if(i->next == selmon->sel)
68 + p = i;
69 + if(i->next == c)
70 + pc = i;
71 + }
72 +
73 + /* swap c and selmon->sel selmon->clients in the selmon->client…
74 + if(c && c != selmon->sel) {
75 + Client *temp = selmon->sel->next==c?selmon->sel:selmon-…
76 + selmon->sel->next = c->next==selmon->sel?c:c->next;
77 + c->next = temp;
78 +
79 + if(p && p != c)
80 + p->next = c;
81 + if(pc && pc != selmon->sel)
82 + pc->next = selmon->sel;
83 +
84 + if(selmon->sel == selmon->clients)
85 + selmon->clients = c;
86 + else if(c == selmon->clients)
87 + selmon->clients = selmon->sel;
88 +
89 + arrange(selmon);
90 + }
91 +}
92 \ No newline at end of file
93 --
94 2.33.1
95
You are viewing proxied material from suckless.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.