SO finally I managed to get some time to sink into this.
Things have moved on in this project. A few basic actions have been implemented, such as:
- focussing to a window in a given direction
- panning the screen if that window is offscreen somewhat
- dealing with any VT switching. This was not that straight forward when it
came to the keybindings: The emitted keysym can be `XKB_KEY_XF86Switch_VT_X` if the mod key is `alt`, otherwise I have to manually create bindings a
binding using mod+shift+FX. Whatever, it's done.
- panning the workspace with keys, by a given percentage of the screen
- managing xdg_surface states, namely tiled/fullscreen/normal etc. wlroots'
interface for this is super nice compared to XCB.
- live config reloading. This wasn't in my initial plan for it was basically
for-free as a result of how I implemented it.
Also, borders. It seems there are currently two window decoration protocols
exposed by wlroots: wlr_xdg_decoration and wlr_server_decoration. As far as I
can tell, the latter is deprecated in favour of the former, but there are
prominent toolkits that use both, so I had to implement both. Largely taking
pointers from sway, this was a relatively simple job fortunately. Indeed, it
may be possible to have some kind fo plugin system or protocol for configuring
custom window decorations, which would be awesome to have.
I also rebranded it finally to something not deskwm, which I didn't like. I
changed it something I kinda like: WIMP. This was a somewhat meh decision but
it was chosen because GIMP was what inspired the unique design of this
compositor: the zooming UI and panning with bounds beyond the typical display
dimensions. So it's now WIMP: WIndows Manipulation Program. (I also like that
some people may read the W is meaning Wayland, but it ain't).
Another change: I moved it primarily to GitHub, and hesitantly so. I wanted to
use issues rather than lines in my readme file to list my to do list and issues
I find, which is much more flexible. And who knows, maybe someone will come
along and contribute or something.
Anyway, this is a nice point because it's _almost_ usable. It _is_ usable with
the major omission of multiple output management.