aewl

changeset 16:359b6e563b95

several changes, new stuff
author Anselm R. Garbe <garbeam@wmii.de>
date Tue, 11 Jul 2006 18:53:41 +0200
parents 00d4d52b231f
children aaf520f53110
files bar.c client.c config.h event.c util.c wm.c wm.h
diffstat 7 files changed, 34 insertions(+), 19 deletions(-) [+]
line diff
     1.1 --- a/bar.c	Tue Jul 11 18:19:01 2006 +0200
     1.2 +++ b/bar.c	Tue Jul 11 18:53:41 2006 +0200
     1.3 @@ -5,22 +5,24 @@
     1.4  
     1.5  #include "wm.h"
     1.6  
     1.7 -static const char *status[] = {
     1.8 -	"sh", "-c", "echo -n `date` `uptime | sed 's/.*://; s/,//g'`"
     1.9 -		" `acpi | awk '{print $4}' | sed 's/,//'`", 0 \
    1.10 -};
    1.11 -
    1.12  void
    1.13  draw_bar()
    1.14  {
    1.15 -	static char buf[1024];
    1.16 -
    1.17 -	buf[0] = 0;
    1.18 -	pipe_spawn(buf, sizeof(buf), dpy, (char **)status);
    1.19 -
    1.20  	brush.rect = barrect;
    1.21  	brush.rect.x = brush.rect.y = 0;
    1.22 -	draw(dpy, &brush, False, buf);
    1.23 +	draw(dpy, &brush, False, NULL);
    1.24 +
    1.25 +	if(stack) {
    1.26 +		brush.rect.width = textwidth(&brush.font, stack->name) + labelheight(&brush.font);
    1.27 +		swap((void **)&brush.fg, (void **)&brush.bg);
    1.28 +		draw(dpy, &brush, False, stack->name);
    1.29 +		swap((void **)&brush.fg, (void **)&brush.bg);
    1.30 +		brush.rect.x += brush.rect.width;
    1.31 +	}
    1.32 +
    1.33 +	brush.rect.width = textwidth(&brush.font, statustext) + labelheight(&brush.font);
    1.34 +	brush.rect.x = barrect.x + barrect.width - brush.rect.width;
    1.35 +	draw(dpy, &brush, False, statustext);
    1.36  
    1.37  	XCopyArea(dpy, brush.drawable, barwin, brush.gc, 0, 0, barrect.width,
    1.38  			barrect.height, 0, 0);
     2.1 --- a/client.c	Tue Jul 11 18:19:01 2006 +0200
     2.2 +++ b/client.c	Tue Jul 11 18:53:41 2006 +0200
     2.3 @@ -35,6 +35,10 @@
     2.4  		}
     2.5  	}
     2.6  	XFree(name.value);
     2.7 +	if(c == stack)
     2.8 +		draw_bar();
     2.9 +	else
    2.10 +		draw_client(c);
    2.11  }
    2.12  
    2.13  void
    2.14 @@ -66,6 +70,7 @@
    2.15  	c->r[RFloat].height = wa->height;
    2.16  	c->border = wa->border_width;
    2.17  	XSetWindowBorderWidth(dpy, c->win, 0);
    2.18 +	XSelectInput(dpy, c->win, StructureNotifyMask | PropertyChangeMask | EnterWindowMask);
    2.19  	XGetTransientForHint(dpy, c->win, &c->trans);
    2.20  	if(!XGetWMNormalHints(dpy, c->win, &c->size, &msize) || !c->size.flags)
    2.21  		c->size.flags = PSize;
     3.1 --- a/config.h	Tue Jul 11 18:19:01 2006 +0200
     3.2 +++ b/config.h	Tue Jul 11 18:53:41 2006 +0200
     3.3 @@ -7,4 +7,4 @@
     3.4  #define BGCOLOR		"#000000"
     3.5  #define FGCOLOR		"#ffaa00"
     3.6  #define BORDERCOLOR	"#000000"
     3.7 -#define STATUSDELAY 1 /* milliseconds */
     3.8 +#define STATUSDELAY	10 /* milliseconds */
     4.1 --- a/event.c	Tue Jul 11 18:19:01 2006 +0200
     4.2 +++ b/event.c	Tue Jul 11 18:53:41 2006 +0200
     4.3 @@ -187,7 +187,6 @@
     4.4  		}
     4.5  		if(ev->atom == XA_WM_NAME || ev->atom == net_atom[NetWMName]) {
     4.6  			update_name(c);
     4.7 -			/*draw_frame(c->sel);*/
     4.8  		}
     4.9  	}
    4.10  }
     5.1 --- a/util.c	Tue Jul 11 18:19:01 2006 +0200
     5.2 +++ b/util.c	Tue Jul 11 18:53:41 2006 +0200
     5.3 @@ -134,7 +134,7 @@
     5.4  			n += l;
     5.5  		}
     5.6  		close(pfd[0]);
     5.7 -		buf[n - 1] = 0;
     5.8 +		buf[n < len ? n : len - 1] = 0;
     5.9  	}
    5.10  	wait(0);
    5.11  }
     6.1 --- a/wm.c	Tue Jul 11 18:19:01 2006 +0200
     6.2 +++ b/wm.c	Tue Jul 11 18:53:41 2006 +0200
     6.3 @@ -27,7 +27,7 @@
     6.4  Bool running = True;
     6.5  Bool sel_screen;
     6.6  
     6.7 -char *bartext, tag[256];
     6.8 +char statustext[1024], tag[256];
     6.9  int screen;
    6.10  
    6.11  Brush brush = {0};
    6.12 @@ -35,9 +35,15 @@
    6.13  Client *stack = NULL;
    6.14  
    6.15  static Bool other_wm_running;
    6.16 -static char version[] = "gridwm - " VERSION ", (C)opyright MMVI Anselm R. Garbe\n";
    6.17 +static const char version[] = "gridwm - " VERSION ", (C)opyright MMVI Anselm R. Garbe\n";
    6.18  static int (*x_error_handler) (Display *, XErrorEvent *);
    6.19  
    6.20 +static const char *status[] = {
    6.21 +	"sh", "-c", "echo -n `date '+%Y/%m/%d %H:%M'`" 
    6.22 +	" `uptime | sed 's/.*://; s/,//g'`"
    6.23 +	" `acpi | awk '{print $4}' | sed 's/,//'`", 0
    6.24 +};
    6.25 +
    6.26  static void
    6.27  usage()
    6.28  {
    6.29 @@ -258,9 +264,9 @@
    6.30  			barrect.width, barrect.height, 0, DefaultDepth(dpy, screen),
    6.31  			CopyFromParent, DefaultVisual(dpy, screen),
    6.32  			CWOverrideRedirect | CWBackPixmap | CWEventMask, &wa);
    6.33 -	bartext = NULL;
    6.34  	XDefineCursor(dpy, barwin, cursor[CurNormal]);
    6.35  	XMapRaised(dpy, barwin);
    6.36 +	pipe_spawn(statustext, sizeof(statustext), dpy, (char **)status);
    6.37  	draw_bar();
    6.38  
    6.39  	wa.event_mask = SubstructureRedirectMask | EnterWindowMask \
    6.40 @@ -282,8 +288,10 @@
    6.41  		t = timeout;
    6.42  		if(select(ConnectionNumber(dpy) + 1, &fds, NULL, NULL, &t) > 0)
    6.43  			continue;
    6.44 -		else if(errno != EINTR)
    6.45 +		else if(errno != EINTR) {
    6.46 +			pipe_spawn(statustext, sizeof(statustext), dpy, (char **)status);
    6.47  			draw_bar();
    6.48 +		}
    6.49  	}
    6.50  
    6.51  	cleanup();
     7.1 --- a/wm.h	Tue Jul 11 18:19:01 2006 +0200
     7.2 +++ b/wm.h	Tue Jul 11 18:53:41 2006 +0200
     7.3 @@ -55,7 +55,7 @@
     7.4  extern void (*handler[LASTEvent]) (XEvent *);
     7.5  
     7.6  extern int screen;
     7.7 -extern char *bartext, tag[256];
     7.8 +extern char statustext[1024], tag[256];
     7.9  
    7.10  extern Brush brush;
    7.11  extern Client *clients, *stack;
    7.12 @@ -74,6 +74,7 @@
    7.13  extern Client *getclient(Window w);
    7.14  extern void focus(Client *c);
    7.15  extern void update_name(Client *c);
    7.16 +extern void draw_client(Client *c);
    7.17  
    7.18  /* event.c */
    7.19  extern unsigned int flush_events(long even_mask);