~ruther/dwl

4a50263148565e571ddc483fd4fc0083b28f160f — Rutherther 8 months ago bd59573 v0.7/focusnthclient
Focus nth client
2 files changed, 22 insertions(+), 0 deletions(-)

M config.def.h
M dwl.c
M config.def.h => config.def.h +1 -0
@@ 148,6 148,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),

M dwl.c => dwl.c +21 -0
@@ 288,6 288,7 @@ static Monitor *dirtomon(enum wlr_direction dir);
static void focusclient(Client *c, int lift);
static void focusmon(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);


@@ 2688,6 2689,26 @@ tagmon(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;

Do not follow this link