URI: 
       several changes, new stuff - dwm - dynamic window manager
  HTML git clone https://git.parazyd.org/dwm
   DIR Log
   DIR Files
   DIR Refs
   DIR README
   DIR LICENSE
       ---
   DIR commit d6e0e6e9879c144f5d374fca0c015fd6208fc27e
   DIR parent b1669b5c48f71c9a7a919dbf09a1af527c62f69a
  HTML Author: Anselm R. Garbe <garbeam@wmii.de>
       Date:   Tue, 11 Jul 2006 18:53:41 +0200
       
       several changes, new stuff
       
       Diffstat:
         M bar.c                               |      24 +++++++++++++-----------
         M client.c                            |       5 +++++
         M config.h                            |       2 +-
         M event.c                             |       1 -
         M util.c                              |       2 +-
         M wm.c                                |      16 ++++++++++++----
         M wm.h                                |       3 ++-
       
       7 files changed, 34 insertions(+), 19 deletions(-)
       ---
   DIR diff --git a/bar.c b/bar.c
       @@ -5,22 +5,24 @@
        
        #include "wm.h"
        
       -static const char *status[] = {
       -        "sh", "-c", "echo -n `date` `uptime | sed 's/.*://; s/,//g'`"
       -                " `acpi | awk '{print $4}' | sed 's/,//'`", 0 \
       -};
       -
        void
        draw_bar()
        {
       -        static char buf[1024];
       -
       -        buf[0] = 0;
       -        pipe_spawn(buf, sizeof(buf), dpy, (char **)status);
       -
                brush.rect = barrect;
                brush.rect.x = brush.rect.y = 0;
       -        draw(dpy, &brush, False, buf);
       +        draw(dpy, &brush, False, NULL);
       +
       +        if(stack) {
       +                brush.rect.width = textwidth(&brush.font, stack->name) + labelheight(&brush.font);
       +                swap((void **)&brush.fg, (void **)&brush.bg);
       +                draw(dpy, &brush, False, stack->name);
       +                swap((void **)&brush.fg, (void **)&brush.bg);
       +                brush.rect.x += brush.rect.width;
       +        }
       +
       +        brush.rect.width = textwidth(&brush.font, statustext) + labelheight(&brush.font);
       +        brush.rect.x = barrect.x + barrect.width - brush.rect.width;
       +        draw(dpy, &brush, False, statustext);
        
                XCopyArea(dpy, brush.drawable, barwin, brush.gc, 0, 0, barrect.width,
                                barrect.height, 0, 0);
   DIR diff --git a/client.c b/client.c
       @@ -35,6 +35,10 @@ update_name(Client *c)
                        }
                }
                XFree(name.value);
       +        if(c == stack)
       +                draw_bar();
       +        else
       +                draw_client(c);
        }
        
        void
       @@ -66,6 +70,7 @@ manage(Window w, XWindowAttributes *wa)
                c->r[RFloat].height = wa->height;
                c->border = wa->border_width;
                XSetWindowBorderWidth(dpy, c->win, 0);
       +        XSelectInput(dpy, c->win, StructureNotifyMask | PropertyChangeMask | EnterWindowMask);
                XGetTransientForHint(dpy, c->win, &c->trans);
                if(!XGetWMNormalHints(dpy, c->win, &c->size, &msize) || !c->size.flags)
                        c->size.flags = PSize;
   DIR diff --git a/config.h b/config.h
       @@ -7,4 +7,4 @@
        #define BGCOLOR                "#000000"
        #define FGCOLOR                "#ffaa00"
        #define BORDERCOLOR        "#000000"
       -#define STATUSDELAY 1 /* milliseconds */
       +#define STATUSDELAY        10 /* milliseconds */
   DIR diff --git a/event.c b/event.c
       @@ -187,7 +187,6 @@ propertynotify(XEvent *e)
                        }
                        if(ev->atom == XA_WM_NAME || ev->atom == net_atom[NetWMName]) {
                                update_name(c);
       -                        /*draw_frame(c->sel);*/
                        }
                }
        }
   DIR diff --git a/util.c b/util.c
       @@ -134,7 +134,7 @@ pipe_spawn(char *buf, unsigned int len, Display *dpy, char *argv[])
                                n += l;
                        }
                        close(pfd[0]);
       -                buf[n - 1] = 0;
       +                buf[n < len ? n : len - 1] = 0;
                }
                wait(0);
        }
   DIR diff --git a/wm.c b/wm.c
       @@ -27,7 +27,7 @@ XRectangle rect, barrect;
        Bool running = True;
        Bool sel_screen;
        
       -char *bartext, tag[256];
       +char statustext[1024], tag[256];
        int screen;
        
        Brush brush = {0};
       @@ -35,9 +35,15 @@ Client *clients = NULL;
        Client *stack = NULL;
        
        static Bool other_wm_running;
       -static char version[] = "gridwm - " VERSION ", (C)opyright MMVI Anselm R. Garbe\n";
       +static const char version[] = "gridwm - " VERSION ", (C)opyright MMVI Anselm R. Garbe\n";
        static int (*x_error_handler) (Display *, XErrorEvent *);
        
       +static const char *status[] = {
       +        "sh", "-c", "echo -n `date '+%Y/%m/%d %H:%M'`" 
       +        " `uptime | sed 's/.*://; s/,//g'`"
       +        " `acpi | awk '{print $4}' | sed 's/,//'`", 0
       +};
       +
        static void
        usage()
        {
       @@ -258,9 +264,9 @@ main(int argc, char *argv[])
                                barrect.width, barrect.height, 0, DefaultDepth(dpy, screen),
                                CopyFromParent, DefaultVisual(dpy, screen),
                                CWOverrideRedirect | CWBackPixmap | CWEventMask, &wa);
       -        bartext = NULL;
                XDefineCursor(dpy, barwin, cursor[CurNormal]);
                XMapRaised(dpy, barwin);
       +        pipe_spawn(statustext, sizeof(statustext), dpy, (char **)status);
                draw_bar();
        
                wa.event_mask = SubstructureRedirectMask | EnterWindowMask \
       @@ -282,8 +288,10 @@ main(int argc, char *argv[])
                        t = timeout;
                        if(select(ConnectionNumber(dpy) + 1, &fds, NULL, NULL, &t) > 0)
                                continue;
       -                else if(errno != EINTR)
       +                else if(errno != EINTR) {
       +                        pipe_spawn(statustext, sizeof(statustext), dpy, (char **)status);
                                draw_bar();
       +                }
                }
        
                cleanup();
   DIR diff --git a/wm.h b/wm.h
       @@ -55,7 +55,7 @@ extern Bool running, sel_screen, grid;
        extern void (*handler[LASTEvent]) (XEvent *);
        
        extern int screen;
       -extern char *bartext, tag[256];
       +extern char statustext[1024], tag[256];
        
        extern Brush brush;
        extern Client *clients, *stack;
       @@ -74,6 +74,7 @@ extern void unmanage(Client *c);
        extern Client *getclient(Window w);
        extern void focus(Client *c);
        extern void update_name(Client *c);
       +extern void draw_client(Client *c);
        
        /* event.c */
        extern unsigned int flush_events(long even_mask);