summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorbakkeby <[email protected]>2021-04-28 10:52:59 +0200
committerbakkeby <[email protected]>2021-04-28 10:52:59 +0200
commit4bfda0327c1696808db85475e24c898aa3af234e (patch)
tree46787234f42170df28f28cf3ba89bf0b7365afc9
parenteb66da79ca2be51c0f2b2c2d95952aeba0564bed (diff)
downloaddwm-flexipatch-4bfda0327c1696808db85475e24c898aa3af234e.tar.gz
dwm-flexipatch-4bfda0327c1696808db85475e24c898aa3af234e.zip
anybar: misc improvements ref. #118
-rw-r--r--dwm.c7
-rw-r--r--patch/bar_anybar.c16
-rw-r--r--patches.def.h9
3 files changed, 19 insertions, 13 deletions
diff --git a/dwm.c b/dwm.c
index 4ec1182..78476dc 100644
--- a/dwm.c
+++ b/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
diff --git a/patch/bar_anybar.c b/patch/bar_anybar.c
index fa6b4d2..05546e3 100644
--- a/patch/bar_anybar.c
+++ b/patch/bar_anybar.c
@@ -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);
diff --git a/patches.def.h b/patches.def.h
index c5f45bf..3b0c047 100644
--- a/patches.def.h
+++ b/patches.def.h
@@ -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