accessnthmon.diff - sites - public wiki contents of suckless.org | |
git clone git://git.suckless.org/sites | |
Log | |
Files | |
Refs | |
--- | |
accessnthmon.diff (2695B) | |
--- | |
1 diff --git a/config.def.h b/config.def.h | |
2 index 1c0b587..8595a71 100644 | |
3 --- a/config.def.h | |
4 +++ b/config.def.h | |
5 @@ -49,7 +49,10 @@ static const Layout layouts[] = { | |
6 { MODKEY, KEY, view, {.ui … | |
7 { MODKEY|ControlMask, KEY, toggleview, {.ui … | |
8 { MODKEY|ShiftMask, KEY, tag, {.ui … | |
9 - { MODKEY|ControlMask|ShiftMask, KEY, toggletag, {.ui … | |
10 + { MODKEY|ControlMask|ShiftMask, KEY, toggletag, {.ui … | |
11 + { ALTMOD, KEY, focusnthmon, {.i … | |
12 + { ALTMOD|ShiftMask, KEY, tagnthmon, {.i … | |
13 + | |
14 | |
15 /* helper for spawning shell commands in the pre dwm-5.0 fashion */ | |
16 #define SHCMD(cmd) { .v = (const char*[]){ "/bin/sh", "-c", cmd, NULL }… | |
17 diff --git a/dwm.c b/dwm.c | |
18 index b0b3466..96fa0bd 100644 | |
19 --- a/dwm.c | |
20 +++ b/dwm.c | |
21 @@ -161,6 +161,7 @@ static void destroynotify(XEvent *e); | |
22 static void detach(Client *c); | |
23 static void detachstack(Client *c); | |
24 static Monitor *dirtomon(int dir); | |
25 +static Monitor *numtomon(int num); | |
26 static void drawbar(Monitor *m); | |
27 static void drawbars(void); | |
28 static void enternotify(XEvent *e); | |
29 @@ -168,6 +169,7 @@ static void expose(XEvent *e); | |
30 static void focus(Client *c); | |
31 static void focusin(XEvent *e); | |
32 static void focusmon(const Arg *arg); | |
33 +static void focusnthmon(const Arg *arg); | |
34 static void focusstack(const Arg *arg); | |
35 static Atom getatomprop(Client *c, Atom prop); | |
36 static int getrootptr(int *x, int *y); | |
37 @@ -209,6 +211,7 @@ static void sigchld(int unused); | |
38 static void spawn(const Arg *arg); | |
39 static void tag(const Arg *arg); | |
40 static void tagmon(const Arg *arg); | |
41 +static void tagnthmon(const Arg *arg); | |
42 static void tile(Monitor *); | |
43 static void togglebar(const Arg *arg); | |
44 static void togglefloating(const Arg *arg); | |
45 @@ -693,6 +696,18 @@ dirtomon(int dir) | |
46 return m; | |
47 } | |
48 | |
49 +Monitor * | |
50 +numtomon(int num) | |
51 +{ | |
52 + Monitor *m = NULL; | |
53 + int i = 0; | |
54 + | |
55 + for(m = mons, i=0; m->next && i < num; m = m->next){ | |
56 + i++; | |
57 + } | |
58 + return m; | |
59 +} | |
60 + | |
61 void | |
62 drawbar(Monitor *m) | |
63 { | |
64 @@ -830,6 +845,21 @@ focusmon(const Arg *arg) | |
65 focus(NULL); | |
66 } | |
67 | |
68 +void | |
69 +focusnthmon(const Arg *arg) | |
70 +{ | |
71 + Monitor *m; | |
72 + | |
73 + if (!mons->next) | |
74 + return; | |
75 + | |
76 + if ((m = numtomon(arg->i)) == selmon) | |
77 + return; | |
78 + unfocus(selmon->sel, 0); | |
79 + selmon = m; | |
80 + focus(NULL); | |
81 +} | |
82 + | |
83 void | |
84 focusstack(const Arg *arg) | |
85 { | |
86 @@ -1671,6 +1701,14 @@ tagmon(const Arg *arg) | |
87 sendmon(selmon->sel, dirtomon(arg->i)); | |
88 } | |
89 | |
90 +void | |
91 +tagnthmon(const Arg *arg) | |
92 +{ | |
93 + if (!selmon->sel || !mons->next) | |
94 + return; | |
95 + sendmon(selmon->sel, numtomon(arg->i)); | |
96 +} | |
97 + | |
98 void | |
99 tile(Monitor *m) | |
100 { |