dwm-resetlayout-20200420-c82db69.diff - sites - public wiki contents of suckless.org
 (HTM) git clone git://git.suckless.org/sites
 (DIR) Log
 (DIR) Files
 (DIR) Refs
       ---
       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);