diff options
-rw-r--r-- | config.def.h | 1 | ||||
-rw-r--r-- | dwm.c | 16 |
2 files changed, 17 insertions, 0 deletions
diff --git a/config.def.h b/config.def.h index c0dfdd4..9f6f41e 100644 --- a/config.def.h +++ b/config.def.h @@ -97,6 +97,7 @@ static const Key keys[] = { { MODKEY, XK_l, setmfact, {.f = +0.05} }, { MODKEY|ShiftMask, XK_j, pushdown, {0} }, { MODKEY|ShiftMask, XK_k, pushup, {0} }, + { MODKEY, XK_r, resetlayout, {0} }, { MODKEY, XK_Return, zoom, {0} }, { MODKEY, XK_Tab, view, {0} }, { MODKEY, XK_q, killclient, {0} }, @@ -202,6 +202,7 @@ static void pushdown(const Arg *arg); static void pushup(const Arg *arg); static void quit(const Arg *arg); static Monitor *recttomon(int x, int y, int w, int h); +static void resetlayout(const Arg *arg); static void resize(Client *c, int x, int y, int w, int h, int interact); static void resizeclient(Client *c, int x, int y, int w, int h); static void resizemouse(const Arg *arg); @@ -1491,6 +1492,18 @@ recttomon(int x, int y, int w, int h) } void +resetlayout(const Arg *arg) +{ + Arg default_layout = {.v = &layouts[0]}; + Arg default_mfact = {.f = mfact + 1}; + Arg default_nmaster = {.i = nmaster - selmon->nmaster}; + + setlayout(&default_layout); + setmfact(&default_mfact); + incnmaster(&default_nmaster); +} + +void resize(Client *c, int x, int y, int w, int h, int interact) { if (applysizehints(c, &x, &y, &w, &h, interact)) @@ -2062,6 +2075,9 @@ unmanage(Client *c, int destroyed) focus(NULL); updateclientlist(); arrange(m); + + if (nexttiled(m->clients) == NULL) + resetlayout(NULL); } void |