accessnthmon.diff - sites - public wiki contents of suckless.org
(HTM) git clone git://git.suckless.org/sites
(DIR) Log
(DIR) Files
(DIR) 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 = 1 << TAG} }, \
7 { MODKEY|ControlMask, KEY, toggleview, {.ui = 1 << TAG} }, \
8 { MODKEY|ShiftMask, KEY, tag, {.ui = 1 << TAG} }, \
9 - { MODKEY|ControlMask|ShiftMask, KEY, toggletag, {.ui = 1 << TAG} },
10 + { MODKEY|ControlMask|ShiftMask, KEY, toggletag, {.ui = 1 << TAG} }, \
11 + { ALTMOD, KEY, focusnthmon, {.i = TAG } }, \
12 + { ALTMOD|ShiftMask, KEY, tagnthmon, {.i = TAG } },
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 {