several changes, new stuff
This commit is contained in:
		
							parent
							
								
									b1669b5c48
								
							
						
					
					
						commit
						d6e0e6e987
					
				
							
								
								
									
										24
									
								
								bar.c
									
									
									
									
									
								
							
							
						
						
									
										24
									
								
								bar.c
									
									
									
									
									
								
							| @ -5,22 +5,24 @@ | |||||||
| 
 | 
 | ||||||
| #include "wm.h" | #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 | void | ||||||
| draw_bar() | draw_bar() | ||||||
| { | { | ||||||
| 	static char buf[1024]; |  | ||||||
| 
 |  | ||||||
| 	buf[0] = 0; |  | ||||||
| 	pipe_spawn(buf, sizeof(buf), dpy, (char **)status); |  | ||||||
| 
 |  | ||||||
| 	brush.rect = barrect; | 	brush.rect = barrect; | ||||||
| 	brush.rect.x = brush.rect.y = 0; | 	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, | 	XCopyArea(dpy, brush.drawable, barwin, brush.gc, 0, 0, barrect.width, | ||||||
| 			barrect.height, 0, 0); | 			barrect.height, 0, 0); | ||||||
|  | |||||||
							
								
								
									
										5
									
								
								client.c
									
									
									
									
									
								
							
							
						
						
									
										5
									
								
								client.c
									
									
									
									
									
								
							| @ -35,6 +35,10 @@ update_name(Client *c) | |||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
| 	XFree(name.value); | 	XFree(name.value); | ||||||
|  | 	if(c == stack) | ||||||
|  | 		draw_bar(); | ||||||
|  | 	else | ||||||
|  | 		draw_client(c); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void | void | ||||||
| @ -66,6 +70,7 @@ manage(Window w, XWindowAttributes *wa) | |||||||
| 	c->r[RFloat].height = wa->height; | 	c->r[RFloat].height = wa->height; | ||||||
| 	c->border = wa->border_width; | 	c->border = wa->border_width; | ||||||
| 	XSetWindowBorderWidth(dpy, c->win, 0); | 	XSetWindowBorderWidth(dpy, c->win, 0); | ||||||
|  | 	XSelectInput(dpy, c->win, StructureNotifyMask | PropertyChangeMask | EnterWindowMask); | ||||||
| 	XGetTransientForHint(dpy, c->win, &c->trans); | 	XGetTransientForHint(dpy, c->win, &c->trans); | ||||||
| 	if(!XGetWMNormalHints(dpy, c->win, &c->size, &msize) || !c->size.flags) | 	if(!XGetWMNormalHints(dpy, c->win, &c->size, &msize) || !c->size.flags) | ||||||
| 		c->size.flags = PSize; | 		c->size.flags = PSize; | ||||||
|  | |||||||
							
								
								
									
										2
									
								
								config.h
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								config.h
									
									
									
									
									
								
							| @ -7,4 +7,4 @@ | |||||||
| #define BGCOLOR		"#000000" | #define BGCOLOR		"#000000" | ||||||
| #define FGCOLOR		"#ffaa00" | #define FGCOLOR		"#ffaa00" | ||||||
| #define BORDERCOLOR	"#000000" | #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]) { | 		if(ev->atom == XA_WM_NAME || ev->atom == net_atom[NetWMName]) { | ||||||
| 			update_name(c); | 			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; | 			n += l; | ||||||
| 		} | 		} | ||||||
| 		close(pfd[0]); | 		close(pfd[0]); | ||||||
| 		buf[n - 1] = 0; | 		buf[n < len ? n : len - 1] = 0; | ||||||
| 	} | 	} | ||||||
| 	wait(0); | 	wait(0); | ||||||
| } | } | ||||||
|  | |||||||
							
								
								
									
										16
									
								
								wm.c
									
									
									
									
									
								
							
							
						
						
									
										16
									
								
								wm.c
									
									
									
									
									
								
							| @ -27,7 +27,7 @@ XRectangle rect, barrect; | |||||||
| Bool running = True; | Bool running = True; | ||||||
| Bool sel_screen; | Bool sel_screen; | ||||||
| 
 | 
 | ||||||
| char *bartext, tag[256]; | char statustext[1024], tag[256]; | ||||||
| int screen; | int screen; | ||||||
| 
 | 
 | ||||||
| Brush brush = {0}; | Brush brush = {0}; | ||||||
| @ -35,9 +35,15 @@ Client *clients = NULL; | |||||||
| Client *stack = NULL; | Client *stack = NULL; | ||||||
| 
 | 
 | ||||||
| static Bool other_wm_running; | 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 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 | static void | ||||||
| usage() | usage() | ||||||
| { | { | ||||||
| @ -258,9 +264,9 @@ main(int argc, char *argv[]) | |||||||
| 			barrect.width, barrect.height, 0, DefaultDepth(dpy, screen), | 			barrect.width, barrect.height, 0, DefaultDepth(dpy, screen), | ||||||
| 			CopyFromParent, DefaultVisual(dpy, screen), | 			CopyFromParent, DefaultVisual(dpy, screen), | ||||||
| 			CWOverrideRedirect | CWBackPixmap | CWEventMask, &wa); | 			CWOverrideRedirect | CWBackPixmap | CWEventMask, &wa); | ||||||
| 	bartext = NULL; |  | ||||||
| 	XDefineCursor(dpy, barwin, cursor[CurNormal]); | 	XDefineCursor(dpy, barwin, cursor[CurNormal]); | ||||||
| 	XMapRaised(dpy, barwin); | 	XMapRaised(dpy, barwin); | ||||||
|  | 	pipe_spawn(statustext, sizeof(statustext), dpy, (char **)status); | ||||||
| 	draw_bar(); | 	draw_bar(); | ||||||
| 
 | 
 | ||||||
| 	wa.event_mask = SubstructureRedirectMask | EnterWindowMask \ | 	wa.event_mask = SubstructureRedirectMask | EnterWindowMask \ | ||||||
| @ -282,9 +288,11 @@ main(int argc, char *argv[]) | |||||||
| 		t = timeout; | 		t = timeout; | ||||||
| 		if(select(ConnectionNumber(dpy) + 1, &fds, NULL, NULL, &t) > 0) | 		if(select(ConnectionNumber(dpy) + 1, &fds, NULL, NULL, &t) > 0) | ||||||
| 			continue; | 			continue; | ||||||
| 		else if(errno != EINTR) | 		else if(errno != EINTR) { | ||||||
|  | 			pipe_spawn(statustext, sizeof(statustext), dpy, (char **)status); | ||||||
| 			draw_bar(); | 			draw_bar(); | ||||||
| 		} | 		} | ||||||
|  | 	} | ||||||
| 
 | 
 | ||||||
| 	cleanup(); | 	cleanup(); | ||||||
| 	XCloseDisplay(dpy); | 	XCloseDisplay(dpy); | ||||||
|  | |||||||
							
								
								
									
										3
									
								
								wm.h
									
									
									
									
									
								
							
							
						
						
									
										3
									
								
								wm.h
									
									
									
									
									
								
							| @ -55,7 +55,7 @@ extern Bool running, sel_screen, grid; | |||||||
| extern void (*handler[LASTEvent]) (XEvent *); | extern void (*handler[LASTEvent]) (XEvent *); | ||||||
| 
 | 
 | ||||||
| extern int screen; | extern int screen; | ||||||
| extern char *bartext, tag[256]; | extern char statustext[1024], tag[256]; | ||||||
| 
 | 
 | ||||||
| extern Brush brush; | extern Brush brush; | ||||||
| extern Client *clients, *stack; | extern Client *clients, *stack; | ||||||
| @ -74,6 +74,7 @@ extern void unmanage(Client *c); | |||||||
| extern Client *getclient(Window w); | extern Client *getclient(Window w); | ||||||
| extern void focus(Client *c); | extern void focus(Client *c); | ||||||
| extern void update_name(Client *c); | extern void update_name(Client *c); | ||||||
|  | extern void draw_client(Client *c); | ||||||
| 
 | 
 | ||||||
| /* event.c */ | /* event.c */ | ||||||
| extern unsigned int flush_events(long even_mask); | extern unsigned int flush_events(long even_mask); | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Anselm R. Garbe
						Anselm R. Garbe