Don't disable fullscreen on all the clients when spawning a new one
Don't focus back the fullscreen client when another client is created on
top of it
All this aims at simplicity and performance by reducing the control of
dwl on how fullscreen works
The wlr-output-management protocol requires that either all of the
changes from an apply request be applied successfully, in which case a
"succeeded" event is sent, or all of the changes are reverted and a
"failed" event is sent. As written, this could partially commit
changes, then fail.
Test the changes first (even for an "apply" event), then commit or
rollback as appropriate.
Additionally, variables xcursor and xcursor_mgr are only used
when xwayland is defined, so I make the variables declaration
contingent on whether xwayland is being used
I am embarrassed to have let this slip through someone's merge. Anybody
who genuinely needs to `sudo make` will know it; everyone else should
use a proper package manager and build system.
Replaces the outputOrder patch.
This avoids recalculating positions and allows to arrange monitors in
any order, not just from left to right.
The order in which monitors are defined in config.h still matters but
it's just the order in the list, not the actual position.
This is the order of *_destroy calls which resulted in the fewest
errors/leaks detected by Valgrind. Most of the errors come from the
gbm_allocator code - will have to figure out which destroy call is still
missing.
With multiple clients on multiple monitors, one client for each monitor
had "focuscolor" colored borders. Now, only just the currently focused
client has "focuscolor" colored borders as usual.
Keep in memory which client is currently focused on every monitor. This
partially eliminates the need for selclient(), is simpler and more
versatile (especially considering the hide-behind-fullscreen patch)
Similar to Linux kernel approach, encapsulate some of the uglier
conditional compilation into inline functions in header files.
The goal is to make dwl.c more attractive to people who embrace the
suckless philosophy - simple, short, hackable, and easy to understand.
We want dwm users to feel comfortable here, not scare them off. Plus,
if we do this right, the main dwl.c code should require only minimal
changes once XWayland is no longer a necessary evil.
According to `cloc`, this also brings dwl.c down below 2000 lines of
non-blank, non-comment code.