Hi James,

cool, I want to give an example how your patch should be
reorganized that it works with less of a hassle beginning with dwm-4.5:

Imagine bstack.c:
/* by James */
static void
bstack(void) {
        unsigned int i, n, nx, ny, nw, nh, mh, tw, th;
        Client *c;

        for(n = 0, c = nexttiled(clients); c; c = nexttiled(c->next))
                n++;

        /* window geoms */
        mh = (n > 1) ? (wah * mwfact) / 1 : wah / (n > 0 ? n : 1);
        th = (n > 1) ? (wah * (1 - mwfact)) / 1 : 0;
        tw = (n > 1) ? waw / (n - 1) : 0;

        for(i = 0, c = nexttiled(clients); c; c = nexttiled(c->next), i++) {
                c->ismax = False;
                nx = wax;
                ny = way;
                if(i < 1) {
                        ny += i * mh;
                        nw = waw - 2 * c->border;
                        nh = mh - 2 * c->border;
                }
                else {
                        nx += (i - 1) * tw;
                        ny += mh * 1;
                        if(i + 1 == n) { /* remainder */
                                nw = (wax + waw) - nx - 2 * c->border;
                        }
                        else {
                                nw = tw - 2 * c->border;
                        }
                        nh = th - 2 * c->border + 1;
                }
                resize(c, nx, ny, nw, nh, RESIZEHINTS);
        }
}

static void
bzoom(const char *arg) {
        Client *c;
 
        if(!sel || (!isarrange(tile) && !isarrange(bstack)) || sel->isfloating)
                return;
        if((c = sel) == nexttiled(clients))
                if(!(c = nexttiled(c->next)))
                        return;
        detach(c);
        attach(c);
        focus(c);
        arrange();
}
EOF

And imagine the following config.h.diff

 /* layout(s) */
+#include "bstack.c"
 static Layout layouts[] = {
        /* symbol               function */
        { "[]=",                tile }, /* first entry is default */
        { "><>",                floating },
+       { "TTT",                bstack},
 };
 #define RESIZEHINTS            True    /* False - respect size hints in tiled 
resizals */
 #define MWFACT                 0.6     /* master width factor [0.1 .. 0.9] */
@@ -48,7 +50,7 @@ Key keys[] = { \
        { MODKEY,                       XK_h,           setmwfact,      "-0.05" 
}, \
        { MODKEY,                       XK_l,           setmwfact,      "+0.05" 
}, \
        { MODKEY,                       XK_m,           togglemax,      NULL }, 
\
-       { MODKEY,                       XK_Return,      zoom,           NULL }, 
\
+       { MODKEY,                       XK_Return,      bzoom,          NULL }, 
\
        { MODKEY|ShiftMask,             XK_space,       togglefloating, NULL }, 
\
        { MODKEY|ShiftMask,             XK_c,           killclient,     NULL }, 
\
        { MODKEY,                       XK_0,           view,           NULL }, 
\

As you see, no patches necessary at all, except including that
bstack.c file and to changing the zoom call with bzoom.

Regards,
-- 
 Anselm R. Garbe >< http://www.suckless.org/ >< GPG key: 0D73F361

Reply via email to