summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--config.h2
-rw-r--r--dwl.c11
2 files changed, 13 insertions, 0 deletions
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);
@@ -886,6 +887,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)
{
/* The backend is a wlroots feature which abstracts the underlying input and