baskerville / bspwm

A tiling window manager based on binary space partitioning
BSD 2-Clause "Simplified" License
7.72k stars 414 forks source link

Hide Lemonbar dynamically? #644

Closed Anachron closed 4 years ago

Anachron commented 7 years ago

I am trying to hide my panel under a few specific conditions but I cant make it work.

I'm using lemonbar and have set an Xname of "sp" and then queried window ID using xwininfo. The spw is the panelwindowID.

Got "bspc node "${spw}" -g hidden=on" which works for normal windows tracked by bspwm but not for panels.

So what am I missing here?

msteen commented 7 years ago

In the source code of rule.c you can find the following:

...
} else if (a == ewmh->_NET_WM_WINDOW_TYPE_DOCK ||
           a == ewmh->_NET_WM_WINDOW_TYPE_DESKTOP ||
           a == ewmh->_NET_WM_WINDOW_TYPE_NOTIFICATION) {
  csq->manage = false;
...

And since Lemonbar is a dock as you can see with xprop:

_NET_WM_WINDOW_TYPE(ATOM) = _NET_WM_WINDOW_TYPE_DOCK

Means that bspwm will not manage the Lemonbar windows, so any bspc command on them will fail.

Instead you could use the xdo program by the same author as bspwm: xdo hide -a sp. I do not know what your reason is to hide the panel, but I use xdo to make sure the Lemonbar windows are not above fullscreen windows with the following: xdo lower -a sp.

PS: If xdo does not work for you, be sure to use the latest version (0.5.6), because earlier versions did not sync with the X server, causing commands to sometimes not take effect in time.

jallbrit commented 4 years ago

@Anachron did xdo hide work for you?

Anachron commented 4 years ago

Yep, closing.