dwm-transfer-6.2.diff - sites - public wiki contents of suckless.org | |
git clone git://git.suckless.org/sites | |
Log | |
Files | |
Refs | |
--- | |
dwm-transfer-6.2.diff (2691B) | |
--- | |
1 From 57500f9154a3aa99f38f98d552915b8570b7cfdf Mon Sep 17 00:00:00 2001 | |
2 From: Miles Alan <[email protected]> | |
3 Date: Sat, 25 Jan 2020 22:47:38 -0600 | |
4 Subject: [PATCH] Add transfer function which transfers tiled client betw… | |
5 the stack & master. Adjusts the nmaster variable accordingly (e.g. if m… | |
6 to master, nmaster++ and if moving to stack nmaster--). | |
7 | |
8 Default keybinding added to config.def.h is Mod+x | |
9 --- | |
10 config.def.h | 1 + | |
11 dwm.c | 34 ++++++++++++++++++++++++++++++++++ | |
12 2 files changed, 35 insertions(+) | |
13 | |
14 diff --git a/config.def.h b/config.def.h | |
15 index 1c0b587..67ec8ae 100644 | |
16 --- a/config.def.h | |
17 +++ b/config.def.h | |
18 @@ -70,6 +70,7 @@ static Key keys[] = { | |
19 { MODKEY, XK_d, incnmaster, {.i … | |
20 { MODKEY, XK_h, setmfact, {.f … | |
21 { MODKEY, XK_l, setmfact, {.f … | |
22 + { MODKEY, XK_x, transfer, {0} … | |
23 { MODKEY, XK_Return, zoom, {0} … | |
24 { MODKEY, XK_Tab, view, {0} … | |
25 { MODKEY|ShiftMask, XK_c, killclient, {0} … | |
26 diff --git a/dwm.c b/dwm.c | |
27 index 4465af1..ada794b 100644 | |
28 --- a/dwm.c | |
29 +++ b/dwm.c | |
30 @@ -213,6 +213,7 @@ static void togglebar(const Arg *arg); | |
31 static void togglefloating(const Arg *arg); | |
32 static void toggletag(const Arg *arg); | |
33 static void toggleview(const Arg *arg); | |
34 +static void transfer(const Arg *arg); | |
35 static void unfocus(Client *c, int setfocus); | |
36 static void unmanage(Client *c, int destroyed); | |
37 static void unmapnotify(XEvent *e); | |
38 @@ -2147,3 +2148,36 @@ main(int argc, char *argv[]) | |
39 XCloseDisplay(dpy); | |
40 return EXIT_SUCCESS; | |
41 } | |
42 + | |
43 +void | |
44 +transfer(const Arg *arg) { | |
45 + Client *c, *mtail = selmon->clients, *stail = NULL, *insertafte… | |
46 + int transfertostack = 0, i, nmasterclients; | |
47 + | |
48 + for (i = 0, c = selmon->clients; c; c = c->next) { | |
49 + if (!ISVISIBLE(c) || c->isfloating) continue; | |
50 + if (selmon->sel == c) { transfertostack = i < selmon->n… | |
51 + if (i < selmon->nmaster) { nmasterclients++; mtail = c;… | |
52 + stail = c; | |
53 + i++; | |
54 + } | |
55 + if (!selmon->sel || selmon->sel->isfloating || i == 0) { | |
56 + return; | |
57 + } else if (transfertostack) { | |
58 + selmon->nmaster = MIN(i, selmon->nmaster) - 1; | |
59 + insertafter = stail; | |
60 + } else { | |
61 + selmon->nmaster = selmon->nmaster + 1; | |
62 + insertafter = mtail; | |
63 + } | |
64 + if (insertafter != selmon->sel) { | |
65 + detach(selmon->sel); | |
66 + if (selmon->nmaster == 1 && !transfertostack) { | |
67 + attach(selmon->sel); // Head prepend case | |
68 + } else { | |
69 + selmon->sel->next = insertafter->next; | |
70 + insertafter->next = selmon->sel; | |
71 + } | |
72 + } | |
73 + arrange(selmon); | |
74 +} | |
75 -- | |
76 2.23.1 | |
77 |