baskerville / bspwm

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

Unable to have click action in lemonbar when focus_follows_pointer true #695

Open msteen opened 7 years ago

msteen commented 7 years ago

I just tried to reproduce some issue with bspc config focus_follows_pointer true, but instead of being able to reproduce that issue I stumbled upon another issue, namely that I am unable to click on my lemonbar to invoke an action that should have changed my desktop focus, similar to what you have in the panel example. I normally just use bspc config click_to_focus any without bspc config focus_follows_pointer true and then it works fine. I have an external rule for the lemonbar with just manage=off and a call to xdo lower $wid, similar to what I show in this comment.

baskerville commented 7 years ago

It probably means that your panel is below the invisible window that represents the root window of the related monitor. Your can check that by clicking your panel after running xprop.

Here's the recommended way of solving this problem:

wid=$(xdo id -a "$PANEL_WM_NAME")
tries_left=20
while [ -z "$wid" -a "$tries_left" -gt 0 ] ; do
    sleep 0.05
    wid=$(xdo id -a "$PANEL_WM_NAME")
    tries_left=$((tries_left - 1))
done
[ -n "$wid" ] && xdo above -t "$(xdo id -N Bspwm -n root | sort | head -n 1)" "$wid"
msteen commented 7 years ago

Thanks, that solved it, I will close the issue. I used xdo above -t $(xprop -root _NET_SUPPORTING_WM_CHECK | awk -F "# " '{print $2}') -a <panel_name> instead, which also works fine. I doubt it is an accident that xdo id -N Bspwm -n root returns 3 ids when I have 3 monitors, so it somehow feels wrong to just take the lowest id, even though it worked as well.

msteen commented 7 years ago

When I just tested if manage=off ignores previously defined rule consequences with Filezilla I obviously ran into the same problem as with the panel, it not responding to mouse input. So I was thinking, should bspwm not do this xdo above ... bit itself when you set a window to be unmanaged, because you would expect (I do at least) that even though the window is unmanaged it should still respond to mouse input. I do understand that you are on your own when you do not let the window manager manage a window, but I think this would be less surprising and the window position can still be changed afterwards, so it should not get in the way of managing it yourself.

baskerville commented 7 years ago

So I was thinking, should bspwm not do this xdo above ... bit itself when you set a window to be unmanaged? Because you would expect (I do at least) that even though the window is unmanaged it should still respond to mouse input.

Agreed.