Re:RubyWM – an X11 window manager in pure Ruby
by vidarh on Monday January 22, 2024 @02:59PM
(#39094583)
i3wm, bspwm, etc, and many others have provided APIs like that "forever". The problem is that they're async and sit "besides" or "after" the actual window management.
E.g. one of the things I disliked about bspwm was that while I could get a feed of events and act on them, I couldn't intercept and modify or reject requests, so e.g. when a new window opened, bspwm would place it, and issue an event, and before my script could reconfigure the window it'd already be visible, so to get a floating desktop the way I wanted I ended up with windows flashing up in one location and then moving.
Put another way: The plethora of Wayland compositors is a strong demonstration of how these compositors don't give sufficient control via their external APIs, or people would write window managers for one or more of those compositors instead of writing more compositors.
Afaik river does something in that direction https://github.com/riverwm/river
> Dynamic layouts generated by external, user-written executables. A default rivertile layout generator is provided.
> Scriptable configuration and control through a custom Wayland protocol and separate riverctl binary implementing it.