On Wed, Mar 10, 2021 at 02:19:49PM +0000, Thomas Leonard wrote:
I didn’t have time to write and debug C++ code for every missing Wayland protocol, so I took a short-cut: I wrote my own Wayland library, ocaml-wayland, and then used that to write my own version of sommelier. With that, adding support for copying text was fairly easy.
Well this is interesting! I definitely want to learn more about this.
I've put it up here: https://github.com/talex5/wayland-virtwl-proxy
There's a default.nix file, so it should build easily enough (make sure to git clone with submodules). I'd be interested to know if it works for other people. I've been using it for about a week now, and it seems fine with firefox, evince and xfce4-terminal (the apps I use).
But e.g. kitty won't run because there's no `wl_drm` support. I don't know anything about graphics acceleration. But someone on Hacker News commented that you did panfrost, so I guess you know about that sort of thing.
Alas, I am not Alyssa Rosenzweig of panfrost (gosh how much easier this would be if I knew as much about Linux graphics as she does!). But it is not uncommon that people get us mixed up. :) FWIW, wl_drm solves your complaint of having to copy buffers from client-allocated memory -- with wl_drm, the client is given a dmabuf from the server. As I understand it, Chromium OS already supports this with virtio-gpu, but I haven't tried that yet.
I’m not sure how guest-to-guest communication works with KVM.
It... doesn't really, at least not the way it does with Xen. virtio-vhost-user[1] is promising, but very early stages. I've talked in quite a lot of detail about how that works on this list before as well. guest-to-guest communication was my main area of work for most of the second half of last year (and what ended up causing me to burn out).
I guess once you've got shared memory and inter-VM interrupts it might be possible to reuse the Xen protocols and drivers. I made a firewall VM on Qubes that did that a few years ago (https://roscidus.com/blog/blog/2016/01/01/a-unikernel-firewall-for-qubesos/). But the virtio protocols will probably be more widely supported in future.
That's an interesting idea I hadn't considered. But I am hoping that virtio gets to the point that we don't need to do that in a reasonable amount of time.