anybar: misc improvements ref. #118
This commit is contained in:
		
							
								
								
									
										7
									
								
								dwm.c
									
									
									
									
									
								
							
							
						
						
									
										7
									
								
								dwm.c
									
									
									
									
									
								
							| @@ -4284,6 +4284,10 @@ updatebarpos(Monitor *m) | ||||
|  | ||||
| 	for (bar = m->bar; bar; bar = bar->next) { | ||||
| 		bar->bx = m->wx + x_pad; | ||||
| 		#if BAR_ANYBAR_PATCH && !BAR_ANYBAR_MANAGE_WIDTH_PATCH | ||||
| 		if (bar->external) | ||||
| 			continue; | ||||
| 		#endif // BAR_ANYBAR_PATCH | BAR_ANYBAR_MANAGE_WIDTH_PATCH | ||||
| 		bar->bw = m->ww - 2 * x_pad; | ||||
| 	} | ||||
|  | ||||
| @@ -4316,9 +4320,8 @@ updatebarpos(Monitor *m) | ||||
| 		if (bar->topbar) | ||||
| 			m->wy = m->wy + bar->bh + y_pad; | ||||
| 		m->wh -= y_pad + bar->bh; | ||||
| 	} | ||||
| 	for (bar = m->bar; bar; bar = bar->next) | ||||
| 		bar->by = (bar->topbar ? m->wy - bar->bh : m->wy + m->wh); | ||||
| 	} | ||||
| } | ||||
|  | ||||
| void | ||||
|   | ||||
| @@ -3,20 +3,21 @@ managealtbar(Window win, XWindowAttributes *wa) | ||||
| { | ||||
| 	Monitor *m; | ||||
| 	Bar *bar; | ||||
| 	int i; | ||||
| 	int i = 0; | ||||
| 	if (!(m = recttomon(wa->x, wa->y, wa->width, wa->height))) | ||||
| 		return; | ||||
| 	for (i = 0, bar = m->bar; bar && bar->win && bar->next; bar = bar->next, ++i); // find last bar | ||||
| 	for (bar = m->bar; bar && bar->win && bar->next; bar = bar->next); // find last bar | ||||
| 	if (!bar) { | ||||
| 		bar = m->bar = ecalloc(1, sizeof(Bar)); | ||||
| 		bar->topbar = topbar; | ||||
| 	} else if (bar && bar->win) { | ||||
| 		i = bar->idx + 1; | ||||
| 		bar->next = ecalloc(1, sizeof(Bar)); | ||||
| 		#if BAR_ANYBAR_STACK_BARS_PATCH | ||||
| 		bar->next->topbar = topbar; | ||||
| 		#else | ||||
| 		#if BAR_ANYBAR_TOP_AND_BOTTOM_BARS_PATCH | ||||
| 		bar->next->topbar = !bar->topbar; | ||||
| 		#endif // BAR_ANYBAR_STACK_BARS_PATCH | ||||
| 		#else | ||||
| 		bar->next->topbar = topbar; | ||||
| 		#endif // BAR_ANYBAR_TOP_AND_BOTTOM_BARS_PATCH | ||||
| 		bar = bar->next; | ||||
| 	} | ||||
| 	bar->external = 1; | ||||
| @@ -25,12 +26,13 @@ managealtbar(Window win, XWindowAttributes *wa) | ||||
| 	bar->idx = i; | ||||
| 	bar->borderpx = 0; | ||||
| 	bar->win = win; | ||||
| 	bar->bw = wa->width; | ||||
| 	bar->bh = wa->height; | ||||
| 	updatebarpos(m); | ||||
| 	arrange(m); | ||||
| 	XSelectInput(dpy, win, EnterWindowMask|FocusChangeMask|PropertyChangeMask|StructureNotifyMask); | ||||
| 	XMapWindow(dpy, win); | ||||
| 	XMoveResizeWindow(dpy, bar->win, bar->bx, -bar->by, wa->width, bar->bh); | ||||
| 	XMoveResizeWindow(dpy, bar->win, bar->bx, bar->by, bar->bw, bar->bh); | ||||
| 	arrange(selmon); | ||||
| 	XChangeProperty(dpy, root, netatom[NetClientList], XA_WINDOW, 32, PropModeAppend, | ||||
| 		(unsigned char *) &win, 1); | ||||
|   | ||||
| @@ -229,10 +229,11 @@ | ||||
|  */ | ||||
| #define BAR_ANYBAR_PATCH 0 | ||||
|  | ||||
| /* Anybar option to stack multiple external bars at the top or at the bottom of the monitor | ||||
|  * instead of adding a second bar at the opposite side. | ||||
|  */ | ||||
| #define BAR_ANYBAR_STACK_BARS_PATCH 0 | ||||
| /* Anybar option to place the next bar depending on previous bar's position (top or bottom) */ | ||||
| #define BAR_ANYBAR_TOP_AND_BOTTOM_BARS_PATCH 0 | ||||
|  | ||||
| /* Anybar option to let dwm manage the width of the bar */ | ||||
| #define BAR_ANYBAR_MANAGE_WIDTH_PATCH 0 | ||||
|  | ||||
| /* This patch adds a border around the status bar(s) just like the border of client windows. | ||||
|  * https://codemadness.org/paste/dwm-border-bar.patch | ||||
|   | ||||
		Reference in New Issue
	
	Block a user