Note that previous df131cdb78 libX11 headers
were also required for building (but not for runtime)
Also, I want to apologize to the packagers for do not list *all* the required
dependencies before.
For some reason brave configured for as a wayland client triggers this code on startup and segfaults.
Checking if the client is mapped fixes this, like with the previous fix for urgent border colour.
References: 887fde65a3
Fixes: 72a7d78a1a
Use an early return to avoid indenting the main logic instead of
wrapping the tail of a function in an if statement.
No functional change, except for a handful of places where printstatus()
was being called spuriously (tag, toggletag, toggleview).
ΔSLOC: 0
The scene graph implementation sends these for us, and it does so more
accurately than our overly-simplified approach. Layer shell surfaces
don't appear to receive these events at all, according to my
WAYLAND_DEBUG experiments with bemenu and dtao.
ΔSLOC: -4
If there is no current drag icon, this node will be empty, but we now
have `drag_icon != NULL` as an invariant. This allows us to eliminate a
conditional, since there's no harm in moving an empty node's coordinates
around with the pointer.
ΔSLOC: -1
This parallels the LISTEN macro for statically allocated listeners, and
it allows us to remove almost all of the global wl_listener
declarations.
This also fixes a bug with the axisnotify listener, which was declared
with a compound literal. At block scope, these have automatic storage
duration [1], so the listener was no longer valid after setup()
returned. (The option to declare it static explicitly was standardized
in C23, if that ever gains suckless traction.)
ΔSLOC: -27
[1]: https://en.cppreference.com/w/c/language/compound_literal#Explanation
If we treat the drag icon as distinct from other layers (it doesn't have
contents that are interactive, focusable, etc.), then we can iterate
over layers meaningfully with a simple for loop.
ΔSLOC: -8