Feature: window fences (generalization of tiling)
This MR introduces a new feature called "window fences":
- user can define "fences", regions on screen (via xfconf) where clients are maximized into (instead of whole monitor)
- fences optionally can be configured to auto-maximize the window if is moved in
- behavior outside any fences (or when no fence configured) remains unchanged
- current fence is communicated by window property
- clients can switch to another fence (or outside) updating the the window property
- initial fence can be configured by window policy
Rationale: allows somewhat similar behavior like tiling, but with more flexibility:
- mixed w/ floating windows
- fence regions can defined arbitrarily and by fixed geometry
- easy to configure automatically w/o manual intervention (CASC, auto-provisioners, ...)
- clients can be put into certain regions (w/o extra client side support)
- via policies, this can be defined via window class, title, window type, etc
Further work (planned / WIP):
- auto-provisioning of fences by monitor or split-monitor
- dynamic reconfiguration (eg. on monitor failure or replacement), incl. auto-repositioning
- fence switch via window menu
- optional permanent border markings
- interactive configuration UI