@@ 171,6 171,7 @@ static const Key keys[] = {
{ MODKEY, XKB_KEY_period, focusmon, {.i = WLR_DIRECTION_RIGHT} },
{ MODKEY|WLR_MODIFIER_SHIFT, XKB_KEY_less, tagmon, {.i = WLR_DIRECTION_LEFT} },
{ MODKEY|WLR_MODIFIER_SHIFT, XKB_KEY_greater, tagmon, {.i = WLR_DIRECTION_RIGHT} },
+ { MODKEY, XKB_KEY_m, focusnthclient, {0} },
TAGKEYS( XKB_KEY_1, XKB_KEY_exclam, 0),
TAGKEYS( XKB_KEY_2, XKB_KEY_at, 1),
TAGKEYS( XKB_KEY_3, XKB_KEY_numbersign, 2),
@@ 332,6 332,7 @@ static void focusortogglescratch(const Arg *arg);
static Monitor *numtomon(int num);
static void focusnthmon(const Arg *arg);
static void focusstack(const Arg *arg);
+static void focusnthclient(const Arg *arg);
static Client *focustop(Monitor *m);
static void fullscreennotify(struct wl_listener *listener, void *data);
static void gpureset(struct wl_listener *listener, void *data);
@@ 3321,6 3322,26 @@ tagnthmon(const Arg *arg)
}
void
+focusnthclient(const Arg *arg)
+{
+ Client *c;
+ unsigned int i = arg->ui;
+
+ wl_list_for_each(c, &clients, link) {
+ if (!VISIBLEON(c, selmon) || c->isfloating) {
+ continue;
+ }
+
+ if (i == 0) {
+ focusclient(c, 1);
+ return;
+ }
+
+ i--;
+ }
+}
+
+void
tile(Monitor *m)
{
unsigned int mw, my, ty;