dwm-resetlayout-20200420-c82db69.diff (1839B)
1 diff --git config.def.h config.def.h 2 index 1c0b587..eb823d3 100644 3 --- config.def.h 4 +++ config.def.h 5 @@ -70,6 +70,7 @@ static Key keys[] = { 6 { MODKEY, XK_d, incnmaster, {.i = -1 } }, 7 { MODKEY, XK_h, setmfact, {.f = -0.05} }, 8 { MODKEY, XK_l, setmfact, {.f = +0.05} }, 9 + { MODKEY, XK_r, resetlayout, {0} }, 10 { MODKEY, XK_Return, zoom, {0} }, 11 { MODKEY, XK_Tab, view, {0} }, 12 { MODKEY|ShiftMask, XK_c, killclient, {0} }, 13 diff --git dwm.c dwm.c 14 index 4465af1..75fe777 100644 15 --- dwm.c 16 +++ dwm.c 17 @@ -188,6 +188,7 @@ static void pop(Client *); 18 static void propertynotify(XEvent *e); 19 static void quit(const Arg *arg); 20 static Monitor *recttomon(int x, int y, int w, int h); 21 +static void resetlayout(const Arg *arg); 22 static void resize(Client *c, int x, int y, int w, int h, int interact); 23 static void resizeclient(Client *c, int x, int y, int w, int h); 24 static void resizemouse(const Arg *arg); 25 @@ -1265,6 +1266,16 @@ recttomon(int x, int y, int w, int h) 26 return r; 27 } 28 29 +void 30 +resetlayout(const Arg *arg) 31 +{ 32 + Arg default_layout = {.v = &layouts[0]}; 33 + Arg default_mfact = {.f = mfact + 1}; 34 + 35 + setlayout(&default_layout); 36 + setmfact(&default_mfact); 37 +} 38 + 39 void 40 resize(Client *c, int x, int y, int w, int h, int interact) 41 { 42 @@ -1282,6 +1293,10 @@ resizeclient(Client *c, int x, int y, int w, int h) 43 c->oldw = c->w; c->w = wc.width = w; 44 c->oldh = c->h; c->h = wc.height = h; 45 wc.border_width = c->bw; 46 + 47 + if ((nexttiled(c->mon->clients) == c) && !(nexttiled(c->next))) 48 + resetlayout(NULL); 49 + 50 XConfigureWindow(dpy, c->win, CWX|CWY|CWWidth|CWHeight|CWBorderWidth, &wc); 51 configure(c); 52 XSync(dpy, False);