> keybinding), so increasing nmaster and moving that window into the
s/increasing/decreasing/

> ... Anyway it seems like my
> explanation isn't clear so I'll try to implement it and post a patch

Okay, so not knowing the dwm source very well I'm having trouble
implementing this, but I think these excerpts illustrate what I'm
TRYING to do (and I would appreciate it if someone more knowledgeable
than myself could help me fix it). And I'm not really suggesting we
change what mod+shift+enter does, I just thought it would help clarify
that my idea is to replace two incnmaster keybindings with one
keybinding which is a second form of zoom.

config.def.h:

 static Key keys[] = {
        /* modifier                     key        function        argument */
        { MODKEY,                       XK_p,      spawn,          {.v
= dmenucmd } },
-       { MODKEY|ShiftMask,             XK_Return, spawn,          {.v
= termcmd } },
+       { MODKEY,                       XK_n,      spawn,          {.v
= termcmd } },
        { MODKEY,                       XK_b,      togglebar,      {0} },
        { MODKEY,                       XK_j,      focusstack,     {.i = +1 } },
        { MODKEY,                       XK_k,      focusstack,     {.i = -1 } },
-       { MODKEY,                       XK_i,      incnmaster,     {.i = +1 } },
-       { MODKEY,                       XK_d,      incnmaster,     {.i = -1 } },
        { MODKEY,                       XK_h,      setmfact,       {.f
= -0.05} },
        { MODKEY,                       XK_l,      setmfact,       {.f
= +0.05} },
-       { MODKEY,                       XK_Return, zoom,           {0} },
+       { MODKEY,                       XK_Return, zoom,           {.i = 0 } },
+       { MODKEY|ShiftMask,             XK_Return, zoom,           {.i = 1 } },

dwm.c:

void
 zoom(const Arg *arg) {
        Client *c = selmon->sel;
+       int inc = arg->i;
+       /* if the selected client is in the stack, increment nmaster,
otherwise decrement */
+       // inc *= instack(c) ? +1 : -1;

        if(!selmon->lt[selmon->sellt]->arrange
        || (selmon->sel && selmon->sel->isfloating))
                return;
        if(c == nexttiled(selmon->clients))
                if(!c || !(c = nexttiled(c->next)))
                        return;
+       incnmaster(inc);
        pop(c);
 }

Reply via email to