inline moveresize
There were only two lines left in common
grabsx/y are only used by move now
calculate resize based just on cursor/window
This eliminates the need for grab_height and grab_width.
Don't change tiling order in focusnext()
Use the focus stack instead to determine which client is focused
add separate list of clients for focus order
Previously, clicking a client to focus it would change where it was in
the tiled layout as well.
layouts: tile and floating
Behavior's still a little wonky but positioning is there.
"root" color was easy to make configurable
fix rendering on scaled monitors
I have no idea why this takes the raw unscaled resolution, and then we
have to multiply by the scale *again* in render(), but that's life.
introduce rules for monitor configuration
(with dwm, this would already have been done by the X server)
no need to manage unmapped clients
is there?
consistent naming for coordinate variables
x and y are reserved (inasmuch as it's dwl's choice) for coordinates
relative to the layout. ox and oy are used for output-relative
coordinates. sx and sy are surface-relative. dx and dy are deltas.
figuring this out the first time was kind of a Thing... just don't pay
attention to what happens in render and you should be fine.
inline xytosurface in xytoclient
It was a simpler function than it looked
split out setup() and run()
cherry-pick 25d0d1b from upstream
inline handlemove/handleresize
render_data only needs coordinates, not Client
give types some more dwm-like typedef names