diff --git a/config.h b/config.h index 28bcf26..c6953e6 100644 --- a/config.h +++ b/config.h @@ -36,6 +36,8 @@ static const Key keys[] = { { MODKEY|WLR_MODIFIER_SHIFT, XKB_KEY_Return, spawn, {.v = termcmd } }, { MODKEY, XKB_KEY_Escape, quit, {0} }, { MODKEY, XKB_KEY_F1, focusnext, {0} }, + { MODKEY|WLR_MODIFIER_SHIFT, XKB_KEY_L, setlayout, {.v = &layouts[0]} }, + { MODKEY|WLR_MODIFIER_SHIFT, XKB_KEY_F, setlayout, {.v = &layouts[1]} }, }; static const Button buttons[] = { diff --git a/dwl.c b/dwl.c index bba372f..d21a4dc 100644 --- a/dwl.c +++ b/dwl.c @@ -143,6 +143,7 @@ static void resize(Client *c, int x, int y, int w, int h); static void resizemouse(const Arg *arg); static void run(char *startup_cmd); static void setcursor(struct wl_listener *listener, void *data); +static void setlayout(const Arg *arg); static void setup(void); static void spawn(const Arg *arg); static void tile(Monitor *m); @@ -885,6 +886,16 @@ setcursor(struct wl_listener *listener, void *data) } } +void +setlayout(const Arg *arg) +{ + if (!arg || !arg->v || arg->v != selmon->lt[selmon->sellt]) + selmon->sellt ^= 1; + if (arg && arg->v) + selmon->lt[selmon->sellt] = (Layout *)arg->v; + /* XXX change layout symbol? */ +} + void setup(void) {