focusmon_n will change focus to a specific monitor in the stack. 0 thru
n.
tagmon_n will move the selected window to the specific monitor in the
stack. 0 thru n.
---
dwm.c | 28 ++++++++++++++++++++++++++++
1 file changed, 28 insertions(+)
diff --git a/dwm.c b/dwm.c
index 664c527..85749ae 100644
--- a/dwm.c
+++ b/dwm.c
@@ -168,6 +168,7 @@ static void expose(XEvent *e);
static void focus(Client *c);
static void focusin(XEvent *e);
static void focusmon(const Arg *arg);
+static void focusmon_n(const Arg *arg);
static void focusstack(const Arg *arg);
static Atom getatomprop(Client *c, Atom prop);
static int getrootptr(int *x, int *y);
@@ -209,6 +210,7 @@ static void sigchld(int unused);
static void spawn(const Arg *arg);
static void tag(const Arg *arg);
static void tagmon(const Arg *arg);
+static void tagmon_n(const Arg *arg);
static void tile(Monitor *);
static void togglebar(const Arg *arg);
static void togglefloating(const Arg *arg);
@@ -830,6 +832,20 @@ focusmon(const Arg *arg)
focus(NULL);
}
+/* Set monitor to specific monitor #0-n */
+void focusmon_n(const Arg *arg)
+{
+ Monitor *m;
+ int i;
+
+ for(i=0, m=mons; i < arg->i && m->next; i++, m=m->next);
+ if (m == selmon)
+ return;
+ unfocus(selmon->sel, 0);
+ selmon = m;
+ focus(NULL);
+}
+
void
focusstack(const Arg *arg)
{
@@ -1671,6 +1687,18 @@ tagmon(const Arg *arg)
sendmon(selmon->sel, dirtomon(arg->i));
}
+/* Move window to specific monitor #0-n */
+void tagmon_n(const Arg *arg)
+{
+ Monitor *m;
+ int i;
+
+ if (!selmon->sel)
+ return;
+ for(i=0, m=mons; i < arg->i && m->next; i++, m=m->next);
+ sendmon(selmon->sel, m);
+}
+
void
tile(Monitor *m)
{
--
2.28.0