On Thu, Aug 23, 2007 at 12:45:47PM -0400, Jeremy O'Brien wrote:
> On Thu, Aug 23, 2007 at 06:19:13PM +0200, Anselm R. Garbe wrote:
> > Hi there,
> > 
> > I created dwm-4.4, you can download it from
> > 
> >   http://www.suckless.org/download/dwm-4.4.tar.gz
> > 
> > This release contains certain bug fixes, a lot of code polishing
> > and some removed features.
> > 
> > I refer to the mailing list archives for details.
> > 
> > Regards,
> > -- 
> >  Anselm R. Garbe >< http://www.suckless.org/ >< GPG key: 0D73F361
> > 
> 
> Hopefully the wonderful patches out for dwm-4.3 will be ported up to
> this new version :)
> -- 
>  Jeremy O'Brien aka neutral_insomniac
>  GPG key: 0xB1140FDB http://pohl.ececs.uc.edu/~jeremy/jeremy.asc
>  Linux ambelina 2.6.22.1 ppc 7447A, altivec supported PowerBook5,8 GNU/Linux

Speaking of patches, you can get the updated bstack and main (openbsd
only) patch from http://calminferno.net/files/.  I only ported the
bstack portrait layout since thats all I use.  Enjoy, and feel free to
post any issues.

-- 
James Turner
BSD Group Consulting
http://www.bsdgroup.org
--- config.default.h    Tue Aug 21 18:09:46 2007
+++ config.default.h    Tue Aug 21 18:10:27 2007
@@ -31,6 +31,7 @@ static Layout layouts[] = { \
        /* symbol               function */ \
        { "[]=",                tile }, /* first entry is default */ \
        { "><>",                floating }, \
+       { "TTT",                bstack }, \
 };
 #define MWFACT                 0.6     /* master width factor [0.1 .. 0.9] */
 #define SNAP                   32      /* snap pixel */
--- tile.c      Tue Aug 21 18:09:46 2007
+++ tile.c      Tue Aug 21 18:17:00 2007
@@ -12,7 +12,7 @@ void
 setmwfact(const char *arg) {
        double delta;
 
-       if(!isarrange(tile))
+       if(!isarrange(tile) && !isarrange(bstack))
                return;
        /* arg handling, manipulate mwfact */
        if(arg == NULL)
@@ -71,10 +71,49 @@ tile(void) {
 }
 
 void
+bstack(void) {
+       unsigned int i, n, nx, ny, nw, nh, mw, 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);
+       mw = waw;
+       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)) {
+               c->ismax = False;
+               nx = wax;
+               ny = way;
+               if(i < 1) {
+                       ny += i * mh;
+                       nw = mw - 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, False);
+               i++;
+       }
+} 
+
+void
 zoom(const char *arg) {
        Client *c;
 
-       if(!sel || !isarrange(tile) || sel->isfloating)
+       if(!sel || (!isarrange(tile) && !isarrange(bstack)) || sel->isfloating)
                return;
        if((c = sel) == nexttiled(clients))
                if(!(c = nexttiled(c->next)))
--- tile.h      Tue Aug 21 18:09:46 2007
+++ tile.h      Tue Aug 21 18:10:55 2007
@@ -3,4 +3,5 @@
 /* tile.c */
 void setmwfact(const char *arg);       /* sets master width factor */
 void tile(void);                       /* arranges all windows tiled */
+void bstack(void);                     /* arranges all windows bottom stacked 
*/
 void zoom(const char *arg);            /* zooms the focused client to master 
area, arg is ignored */
--- main.c      Thu Aug 23 12:11:41 2007
+++ main.c      Thu Aug 23 09:15:10 2007
@@ -221,7 +221,7 @@
        XDefineCursor(dpy, barwin, cursor[CurNormal]);
        updatebarpos();
        XMapRaised(dpy, barwin);
-       strcpy(stext, "dwm-"VERSION);
+       strlcpy(stext, "dwm-"VERSIONi, sizeof(stext));
        /* pixmap for everything */
        dc.drawable = XCreatePixmap(dpy, root, sw, bh, DefaultDepth(dpy, 
screen));
        dc.gc = XCreateGC(dpy, root, 0, 0);

Reply via email to