Multiple Mouse Cursors in Wayland: A Deep Dive into Multi-Seat Support
I spent three weeks exploring how well Linux and Wayland support multiple mouse cursors on a single desktop. While the core protocol is deeply integrated, support varies across compositors like Weston, sway, and niri, as well as libraries like GTK and SDL. I discovered surprising capabilities for pair programming and gaming, but many pieces of the puzzle remain incomplete. I am sharing tools and open project ideas to help expand this collaborative computing space.
This style of multi-player computing facilitates collaboration inside of applications very naturally, without the need for complicated synchronization algorithms.
- any1
> This is obviously not a great solution, and VNC in general feels like ancient technology
It's not obvious to me. This looks like software ageism. :)
There are at least 2 things that could be done to improve performance in the author's setup:
1. Use the --gpu flag which enables dmabuf capture and h264 encoding via vaapi.
2. Connect using a dedicated VNC client like TigerVNC. This reduces latency by roughly 50 ms.
For more details on 2. see second paragraph in the following blog post https://andri.yngvason.is/measuring-latencies.html
That being said, noVNC has gained hardware decoding of h264 via WebCodecs since the writing of that blog post, so performance will have improved some. It's unlikely that the 50 ms latency has gone down, but it might be worth measuring again since browsers may opt to render video through a dedicated overlay plane that bypasses regular rendering. However, it would be silly not to synchronise frame presentation between overlays.
- ofalkaed
I have never liked split keyboards but I might if each keyboard was also a mouse with its own cursor, it seems fun to develop the skill to work that way. Would also be useful at times if the the Thinkpad trackpoint and trackpad could each have their own cursor and I could leave one somewhere. Or maybe a cursor stack like pushd/popd, registers would probably work better; instead of virtual desktops just give me one massive desktop with cursor locations I can jump between, switch to cursor 3 it saves the location of the current cursor and jumps.
- ben-schaaf
To add to the long list of caveats: This also breaks assumptions GUI toolkit and applications make about only one of their windows being focused at a time: `gtk_application_get_active_window`, `QApplication::activeWindow`, etc.
- WhyNotHugo
While op uses systemd/udev's internal property mutation mechanism to configure seats, not that sway (and likely other compositors) allow you to just configure the device-to-seat assignment in your configuration or even at runtime.
- kelnos
I'm building a compositor now, and I've been thinking about multi-seat from the beginning, but I know there are lots of places that assume a single seat, and so this sort of thing won't work for me. It's actually a lot more work than you'd think to support this...
- gorgoiler
I wish libinput gave the option for pointer inertia, where the pointer glides to a gradual rather than a hard halt after you stop moving it. I’m limited to a trackpad these days and it’s a really nice feature on my Steamdeck that I’d love to have on my Thinkpad.
Come to think of it, Steamdeck is Wayland? How do they implement it?
- chaos0815
I remember the multiplayer of Mahjong on the Amiga worked by just plugging in a second mouse. Voila, two pointers.
- comment0r
I immediately recognized the avatar of this person. They are the one with the DIY soft drinks which has been posted on HN before: https://blinry.org/diy-soft-drinks/