Hi, The past few nights, I've been playing around the idea of writing a Wayland backend for GNUstep (this is my first time hacking on GS, though I've contributed to other FOSS projects), first as a way of getting to know Wayland, and later to explore the possibility of a pure GNUstep Desktop Environment.
So far, I've managed to write a functional prototype (consisting of a GS backend and a slightly modified Weston shell) which implements some basic window management. If you're curious, you can see a video from a screen capture here: https://sinrega.org/wp-content/uploads/2016/01/gnu step-wayland.webm It's a bit quirky, and the code is ugly, but as a prototype it serves its purpose. Now I'm considering coding a clean implementation, if no one else is already working on it. As GNUstep already has a Cairo backend, making it write to a Wayland surface, showing something on the screen, is easy. The hard part comes when you want to treat that surfaces as windows in the traditional desktop paradigm, as the basic Wayland protocol lacks the functionality required for this. So, I see three options for a GNUstep Wayland backend: 1. Use only the basic Wayland protocol. Not very useful, except for very specific uses. 2. Use Wayland and Weston's XDG protocols. This would allow to implement some window management, without window levels, ordering, nor absolute window positioning. Also, all features which depend on obtaining the location of the mouse would be broken too. 3. Use Wayland, Weston's XDG and some specific extensions, with a GNUstep-aware Weston shell. This would allow to implement all the functionality, and some nifty features like a static MainMenu and a Dock-like panel. Personally, I'd go with 3. People only wanting to run a single app would be still able to use the x11 backend, while the wayland backend could be used to explore the possibility of a dedicated Desktop Environment. Any thoughts on this? Sergio. _______________________________________________ Gnustep-dev mailing list [email protected] https://lists.gnu.org/mailman/listinfo/gnustep-dev
