dwm-resetlayout-6.2.diff - sites - public wiki contents of suckless.org
 (HTM) git clone git://git.suckless.org/sites
 (DIR) Log
 (DIR) Files
 (DIR) Refs
       ---
       dwm-resetlayout-6.2.diff (2159B)
       ---
            1 From 4df827a2ec7820f41bdb8576cc39b55fbf35be44 Mon Sep 17 00:00:00 2001
            2 From: Jack Bird <jack.bird@durham.ac.uk>
            3 Date: Mon, 16 Aug 2021 23:25:16 +0100
            4 Subject: [PATCH] Patch applies cleanly
            5 
            6 ---
            7  config.def.h |  1 +
            8  dwm.c        | 15 +++++++++++++++
            9  2 files changed, 16 insertions(+)
           10 
           11 diff --git a/config.def.h b/config.def.h
           12 index 1c0b587..5d118cf 100644
           13 --- a/config.def.h
           14 +++ b/config.def.h
           15 @@ -70,6 +70,7 @@ static Key keys[] = {
           16          { MODKEY,                       XK_d,      incnmaster,     {.i = -1 } },
           17          { MODKEY,                       XK_h,      setmfact,       {.f = -0.05} },
           18          { MODKEY,                       XK_l,      setmfact,       {.f = +0.05} },
           19 +    { MODKEY,                       XK_r,      resetlayout,    {0} },
           20          { MODKEY,                       XK_Return, zoom,           {0} },
           21          { MODKEY,                       XK_Tab,    view,           {0} },
           22          { MODKEY|ShiftMask,             XK_c,      killclient,     {0} },
           23 diff --git a/dwm.c b/dwm.c
           24 index 4465af1..77727ea 100644
           25 --- a/dwm.c
           26 +++ b/dwm.c
           27 @@ -188,6 +188,7 @@ static void pop(Client *);
           28  static void propertynotify(XEvent *e);
           29  static void quit(const Arg *arg);
           30  static Monitor *recttomon(int x, int y, int w, int h);
           31 +static void resetlayout(const Arg *arg);
           32  static void resize(Client *c, int x, int y, int w, int h, int interact);
           33  static void resizeclient(Client *c, int x, int y, int w, int h);
           34  static void resizemouse(const Arg *arg);
           35 @@ -1265,6 +1266,16 @@ recttomon(int x, int y, int w, int h)
           36          return r;
           37  }
           38  
           39 +void
           40 +resetlayout(const Arg *arg)
           41 +{
           42 +        Arg default_layout = {.v = &layouts[0]};
           43 +        Arg default_mfact = {.f = mfact + 1};
           44 +
           45 +        setlayout(&default_layout);
           46 +        setmfact(&default_mfact);
           47 +}
           48 +
           49  void
           50  resize(Client *c, int x, int y, int w, int h, int interact)
           51  {
           52 @@ -1282,6 +1293,10 @@ resizeclient(Client *c, int x, int y, int w, int h)
           53          c->oldw = c->w; c->w = wc.width = w;
           54          c->oldh = c->h; c->h = wc.height = h;
           55          wc.border_width = c->bw;
           56 +
           57 +    if ((nexttiled(c->mon->clients) == c) && !(nexttiled(c->next)))
           58 +                resetlayout(NULL);
           59 +
           60          XConfigureWindow(dpy, c->win, CWX|CWY|CWWidth|CWHeight|CWBorderWidth, &wc);
           61          configure(c);
           62          XSync(dpy, False);
           63 -- 
           64 2.32.0
           65