It seems that pointer motion events are not sufficient to enforce
'focus_follows_pointer': some windows grab the pointer and catch those
events (e.g.: *zenity*), preventing *bspwm* from receiving them. So we
need to listen to enter notify events too.
'focus_follows_mouse' is renamed to 'focus_follows_pointer'.
The aforementioned option is now handled by motion notify events.
sxhkd is now required to achieve window move/resize actions through
the new '*_pointer' messages as bspwm is not grabbing the pointer anymore.
This teaches the send_to_monitor command to send a client to either the
next/prev monitor rather than having to always specify a named monitor.
Such options are useful to be able to send clients to monitors relative to
their own position.
It will facilitate debugging and also provide an exhaustive
representation of the current state that might be used to reconstruct
the layout of each desktops. While doing so, it occurred to me that the
*born_as* attribute of the *node_t* structure was only used for leaves,
so I changed it into a *client_t* attribute.
It looks as though commit f37c14902f
introduced a regression in the way urgency borders are rendered. Because
each window is considered across all desktops for monitors, we must now
augment the checking of an urgent client when looking up the border colours
for focused windows also.
Without this, a single window on a desk on an unfocused monitor will be
correctly set as having an urgent hint, but its borders will not pick up on
any urgent border colour settings.
Ensure the explicitly non-focused monitor with a focused window has its
borders down correctly when 'active_border_color' is used.
Previously, the checks handling this did not set the correct monitor to use.
When 'focus_follows_mouse' was enabled, and the focus was given (through
the 'focus' message) to another window, it was possible for the previous
window to generate an enter notify event and, hence, stole the focus.