sites

public wiki contents of suckless.org
git clone git://git.suckless.org/sites
Log | Files | Refs

commit 847586dc0b3b0292eeef69474e2b25dd527ad00e
parent b8f66fb51e3dfd451af55812786c41ed1f74e3b7
Author: Chris Down <chris@chrisdown.name>
Date:   Mon, 20 Apr 2020 13:55:40 +0100

patches: Add resetlayout patch

Diffstat:
Adwm.suckless.org/patches/resetlayout/dwm-resetlayout-20200420-c82db69.diff | 52++++++++++++++++++++++++++++++++++++++++++++++++++++
Adwm.suckless.org/patches/resetlayout/index.md | 22++++++++++++++++++++++
2 files changed, 74 insertions(+), 0 deletions(-)

diff --git a/dwm.suckless.org/patches/resetlayout/dwm-resetlayout-20200420-c82db69.diff b/dwm.suckless.org/patches/resetlayout/dwm-resetlayout-20200420-c82db69.diff @@ -0,0 +1,52 @@ +diff --git config.def.h config.def.h +index 1c0b587..eb823d3 100644 +--- config.def.h ++++ config.def.h +@@ -70,6 +70,7 @@ static Key keys[] = { + { MODKEY, XK_d, incnmaster, {.i = -1 } }, + { MODKEY, XK_h, setmfact, {.f = -0.05} }, + { MODKEY, XK_l, setmfact, {.f = +0.05} }, ++ { MODKEY, XK_r, resetlayout, {0} }, + { MODKEY, XK_Return, zoom, {0} }, + { MODKEY, XK_Tab, view, {0} }, + { MODKEY|ShiftMask, XK_c, killclient, {0} }, +diff --git dwm.c dwm.c +index 4465af1..75fe777 100644 +--- dwm.c ++++ dwm.c +@@ -188,6 +188,7 @@ static void pop(Client *); + static void propertynotify(XEvent *e); + 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); +@@ -1265,6 +1266,16 @@ recttomon(int x, int y, int w, int h) + return r; + } + ++void ++resetlayout(const Arg *arg) ++{ ++ Arg default_layout = {.v = &layouts[0]}; ++ Arg default_mfact = {.f = mfact + 1}; ++ ++ setlayout(&default_layout); ++ setmfact(&default_mfact); ++} ++ + void + resize(Client *c, int x, int y, int w, int h, int interact) + { +@@ -1282,6 +1293,10 @@ resizeclient(Client *c, int x, int y, int w, int h) + c->oldw = c->w; c->w = wc.width = w; + c->oldh = c->h; c->h = wc.height = h; + wc.border_width = c->bw; ++ ++ if ((nexttiled(c->mon->clients) == c) && !(nexttiled(c->next))) ++ resetlayout(NULL); ++ + XConfigureWindow(dpy, c->win, CWX|CWY|CWWidth|CWHeight|CWBorderWidth, &wc); + configure(c); + XSync(dpy, False); diff --git a/dwm.suckless.org/patches/resetlayout/index.md b/dwm.suckless.org/patches/resetlayout/index.md @@ -0,0 +1,22 @@ +resetlayout +=========== + +Description +----------- + +Resets the layout and mfact if there is only one client visible. + +This applies cleanly to vanilla dwm, but is mostly only useful alongside the +[pertag](../pertag/) patch, since otherwise all layouts and mfacts will be +reset. + +You can also set a binding to trigger this on demand, see the new call to +resetlayout in config.def.h. + +Download +-------- +* [dwm-attachaside-20200420-c82db69.diff](dwm-resetlayout-20200420-c82db69.diff) + +Authors +------- +* Chris Down - <chris@chrisdown.name>