Context: We are always looking for easier ways for people to obtain and run Endless OS (with GNOME) for evaluation or even for full regular usage. We have pushed dual boot and VM solutions but there are complications and downsides. We do find that even small technicalities form big challenges for many potential partners and users who are considering taking Endless & GNOME out into the wider world. I am wondering if running Endless OS & GNOME directly on Windows via the WSL layer may offer a smoother path forward.
I am doing a little research on the possibility of running GNOME (the full GNOME desktop and shell, not only the apps) on top of Windows. Windows now has a “WSL” layer where it runs a virtualized Linux instance (including the Linux kernel) and lets you run Linux apps on Windows, to some degree.
I don’t have any experience with WSL, this is my first time looking in a bit more detail. However, I couldn’t find anyone else exploring the challenges of doing this in the most modern form (Wayland & WSL2), so I am sharing my findings here in case it helps move this forward & encourages others to experiment.
In terms of what exists already: this can be done on WSL with Xvnc, i.e. you run GNOME on a headless X server on the Linux side and then export a VNC socket over to Windows where you can connect a VNC client. However the performance is bad here as it doesn’t use acceleration etc. It doesn’t seem worth pursuing this unaccelerated approach based on dated technologies.
Going forward then, for the not-yet-released WSL2, Microsoft has done some interesting work on making Linux GUI apps work. But it is very much app-based. They run a modified version of the Weston compositor that exports the apps over RDP to Windows. Then they run a RDP viewer “natively” to integrate the apps on the Windows desktop.
That’s not quite what I am exploring here, but I think borrowing these ideas is the most realistic way that we would achieve this. We want to send over the whole desktop (not just apps) and we want to use mutter instead of Weston.
To advance here, GNOME/mutter could run the Wayland compositor in headless mode with no physical display. Then gnome-remote-desktop can step in and obtain the desktop contents using PipeWire, and export them over a RDP server.
Once that is done (and it’s great to see movement in that direction - feels like we are quite close), it should be possible to throw together a prototype, running Linux & GNOME under WSL2, in headless mode, with a RDP socket open. Then run a RDP viewer on Windows and connect to the socket.
Then, for improved performance, the RDP server would have to implement the memory sharing that WSL2 has introduced (VAIL & Virtio). (However, I can’t see any reference implementation for this in Microsoft’s Weston fork)
The final steps would then be integration and simplification, looking towards making a one-click installer, etc.