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