From c43af37bf3e7becb544fac4b761050bf1213762a Mon Sep 17 00:00:00 2001 From: Alex Kotov Date: Sun, 5 Dec 2021 18:27:19 +0500 Subject: [PATCH] Manage Polybar --- src/dwm.c | 37 ++++++++++++++++++++++++++++++++++++- src/dwm/handlers.c | 2 +- 2 files changed, 37 insertions(+), 2 deletions(-) diff --git a/src/dwm.c b/src/dwm.c index fa8336a..28ec40f 100644 --- a/src/dwm.c +++ b/src/dwm.c @@ -170,6 +170,7 @@ static void incnmaster(const Arg *arg); static int isuniquegeom(XineramaScreenInfo *unique, size_t n, XineramaScreenInfo *info); static void killclient(const Arg *arg); static void manage(Window w, XWindowAttributes *wa); +static void managepolybar(Window w, XWindowAttributes *wa); static Monitor *monitor_create(); static void monitor_destroy(Monitor *mon); static void movemouse(const Arg *arg); @@ -1189,6 +1190,40 @@ void manage(Window w, XWindowAttributes *wa) focus(NULL); } +void managepolybar(Window w, XWindowAttributes *wa) +{ + Monitor *m = recttomon(wa->x, wa->y, wa->width, wa->height); + if (!m) return; + + XSelectInput( + xbase->x_display, + w, + EnterWindowMask | FocusChangeMask | PropertyChangeMask | StructureNotifyMask + ); + + XMoveResizeWindow( + xbase->x_display, + w, + wa->x, + wa->y, + wa->width, + wa->height + ); + + XMapWindow(xbase->x_display, w); + + XChangeProperty( + xbase->x_display, + xbase->x_root, + xbase->atoms->netatom[NetClientList], + XA_WINDOW, + 32, + PropModeAppend, + (unsigned char*)&w, + 1 + ); +} + Monitor *monitor_create() { Monitor *const m = ecalloc(1, sizeof(Monitor)); @@ -1733,7 +1768,7 @@ void scan() } if (winpolybar(wins[i])) { - // do nothing + managepolybar(wins[i], &wa); } else if ( wa.map_state == IsViewable || diff --git a/src/dwm/handlers.c b/src/dwm/handlers.c index a10ace3..146ea76 100644 --- a/src/dwm/handlers.c +++ b/src/dwm/handlers.c @@ -245,7 +245,7 @@ void on_map_request(XEvent *e) if (wa.override_redirect) return; if (winpolybar(ev->window)) { - // do nothing + managepolybar(ev->window, &wa); } else if (!wintoclient(ev->window)) { manage(ev->window, &wa); }