"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
         
        
        
          
use expressions in sizeof instead of type names
         
        
        
          
no longer need resize_edges (always bottom right)
Also gets rid of the clunky move+resize code
         
        
        
          
ditch the moverequest/resizerequest xdg stuff
dear window, you are not the window manager
         
        
        
          
No need for struct dwl_server
the only use was to hold global state, which is now actually global
         
        
        
          
make server a global
dwm isn't afraid of global variables