dwm-rotatestack-20161021-ab9571b.diff - sites - public wiki contents of suckles… | |
git clone git://git.suckless.org/sites | |
Log | |
Files | |
Refs | |
--- | |
dwm-rotatestack-20161021-ab9571b.diff (2549B) | |
--- | |
1 diff --git a/config.def.h b/config.def.h | |
2 index fd77a07..09737d7 100644 | |
3 --- a/config.def.h | |
4 +++ b/config.def.h | |
5 @@ -64,6 +64,8 @@ static Key keys[] = { | |
6 { MODKEY, XK_p, spawn, {.v … | |
7 { MODKEY|ShiftMask, XK_Return, spawn, {.v … | |
8 { MODKEY, XK_b, togglebar, {0} … | |
9 + { MODKEY|ShiftMask, XK_j, rotatestack, {.i … | |
10 + { MODKEY|ShiftMask, XK_k, rotatestack, {.i … | |
11 { MODKEY, XK_j, focusstack, {.i … | |
12 { MODKEY, XK_k, focusstack, {.i … | |
13 { MODKEY, XK_i, incnmaster, {.i … | |
14 diff --git a/dwm.c b/dwm.c | |
15 index 421bf27..1ec8b10 100644 | |
16 --- a/dwm.c | |
17 +++ b/dwm.c | |
18 @@ -165,6 +165,8 @@ static void detachstack(Client *c); | |
19 static Monitor *dirtomon(int dir); | |
20 static void drawbar(Monitor *m); | |
21 static void drawbars(void); | |
22 +static void enqueue(Client *c); | |
23 +static void enqueuestack(Client *c); | |
24 static void enternotify(XEvent *e); | |
25 static void expose(XEvent *e); | |
26 static void focus(Client *c); | |
27 @@ -194,6 +196,7 @@ static void resize(Client *c, int x, int y, int w, i… | |
28 static void resizeclient(Client *c, int x, int y, int w, int h); | |
29 static void resizemouse(const Arg *arg); | |
30 static void restack(Monitor *m); | |
31 +static void rotatestack(const Arg *arg); | |
32 static void run(void); | |
33 static void scan(void); | |
34 static int sendevent(Client *c, Atom proto); | |
35 @@ -765,6 +768,28 @@ drawbars(void) | |
36 } | |
37 | |
38 void | |
39 +enqueue(Client *c) | |
40 +{ | |
41 + Client *l; | |
42 + for (l = c->mon->clients; l && l->next; l = l->next); | |
43 + if (l) { | |
44 + l->next = c; | |
45 + c->next = NULL; | |
46 + } | |
47 +} | |
48 + | |
49 +void | |
50 +enqueuestack(Client *c) | |
51 +{ | |
52 + Client *l; | |
53 + for (l = c->mon->stack; l && l->snext; l = l->snext); | |
54 + if (l) { | |
55 + l->snext = c; | |
56 + c->snext = NULL; | |
57 + } | |
58 +} | |
59 + | |
60 +void | |
61 enternotify(XEvent *e) | |
62 { | |
63 Client *c; | |
64 @@ -1390,6 +1415,38 @@ restack(Monitor *m) | |
65 } | |
66 | |
67 void | |
68 +rotatestack(const Arg *arg) | |
69 +{ | |
70 + Client *c = NULL, *f; | |
71 + | |
72 + if (!selmon->sel) | |
73 + return; | |
74 + f = selmon->sel; | |
75 + if (arg->i > 0) { | |
76 + for (c = nexttiled(selmon->clients); c && nexttiled(c->… | |
77 + if (c){ | |
78 + detach(c); | |
79 + attach(c); | |
80 + detachstack(c); | |
81 + attachstack(c); | |
82 + } | |
83 + } else { | |
84 + if ((c = nexttiled(selmon->clients))){ | |
85 + detach(c); | |
86 + enqueue(c); | |
87 + detachstack(c); | |
88 + enqueuestack(c); | |
89 + } | |
90 + } | |
91 + if (c){ | |
92 + arrange(selmon); | |
93 + //unfocus(f, 1); | |
94 + focus(f); | |
95 + restack(selmon); | |
96 + } | |
97 +} | |
98 + | |
99 +void | |
100 run(void) | |
101 { | |
102 XEvent ev; |