several changes, new stuff
							parent
							
								
									b1669b5c48
								
							
						
					
					
						commit
						d6e0e6e987
					
				
							
								
								
									
										24
									
								
								bar.c
								
								
								
								
							
							
						
						
									
										24
									
								
								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);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										5
									
								
								client.c
								
								
								
								
							
							
						
						
									
										5
									
								
								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;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										2
									
								
								config.h
								
								
								
								
							
							
						
						
									
										2
									
								
								config.h
								
								
								
								
							| 
						 | 
				
			
			@ -7,4 +7,4 @@
 | 
			
		|||
#define BGCOLOR		"#000000"
 | 
			
		||||
#define FGCOLOR		"#ffaa00"
 | 
			
		||||
#define BORDERCOLOR	"#000000"
 | 
			
		||||
#define STATUSDELAY 1 /* milliseconds */
 | 
			
		||||
#define STATUSDELAY	10 /* milliseconds */
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										1
									
								
								event.c
								
								
								
								
							
							
						
						
									
										1
									
								
								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);*/
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										2
									
								
								util.c
								
								
								
								
							
							
						
						
									
										2
									
								
								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);
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										16
									
								
								wm.c
								
								
								
								
							
							
						
						
									
										16
									
								
								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();
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										3
									
								
								wm.h
								
								
								
								
							
							
						
						
									
										3
									
								
								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);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue