add monocle layout

main
Devin J. Pohly 2020-08-03 12:44:47 -05:00
parent 27bbf9c14f
commit 5a2d87fa6c
2 changed files with 15 additions and 0 deletions

View File

@ -19,6 +19,7 @@ static const Layout layouts[] = {
/* symbol arrange function */
{ "[]=", tile },
{ "><>", NULL }, /* no layout function means floating behavior */
{ "[M]", monocle },
};
/* monitors */
@ -65,6 +66,7 @@ static const Key keys[] = {
{ MODKEY|WLR_MODIFIER_SHIFT, XKB_KEY_c, killclient, {0} },
{ MODKEY, XKB_KEY_t, setlayout, {.v = &layouts[0]} },
{ MODKEY, XKB_KEY_f, setlayout, {.v = &layouts[1]} },
{ MODKEY, XKB_KEY_m, setlayout, {.v = &layouts[2]} },
{ MODKEY, XKB_KEY_space, setlayout, {0} },
{ MODKEY|WLR_MODIFIER_SHIFT, XKB_KEY_space, togglefloating, {0} },
{ MODKEY, XKB_KEY_0, view, {.ui = ~0} },

13
dwl.c
View File

@ -189,6 +189,7 @@ static void keypress(struct wl_listener *listener, void *data);
static void keypressmod(struct wl_listener *listener, void *data);
static void killclient(const Arg *arg);
static void maprequest(struct wl_listener *listener, void *data);
static void monocle(Monitor *m);
static void motionabsolute(struct wl_listener *listener, void *data);
static void motionnotify(uint32_t time);
static void motionrelative(struct wl_listener *listener, void *data);
@ -932,6 +933,18 @@ maprequest(struct wl_listener *listener, void *data)
applyrules(c);
}
void
monocle(Monitor *m)
{
Client *c;
wl_list_for_each(c, &clients, link) {
if (!VISIBLEON(c, m) || c->isfloating)
continue;
resize(c, m->w.x, m->w.y, m->w.width, m->w.height, 0);
}
}
void
motionabsolute(struct wl_listener *listener, void *data)
{