State of multi-player Wayland
State of multi-player Wayland
2026-07-28
blinry
CC BY-SA 4.0
/ tech, software
I’ve been fascinated by the idea of attaching multiple mice to one computer, and then having multiple mouse cursors inside of one desktop environment!
I just spent three weeks investigating how well that’s currently supported on Linux & Wayland.<br>Let me tell you what I found!<br>The results are surprisingly cool.
Together with this blog post, I’m publishing a number of little tools and patched libraries that add or improve “multi-seat” support.<br>But many pieces in this puzzle are still incomplete or missing.<br>I marked some “open projects ideas” with a 📝 emoji throughout the blog post.<br>By publishing this post, I hope to find people who are interested in exploring and expanding this space together.<br>If that’s you, reach out!
(Yes, my default mouse cursor is a turtle.)
Why would you even want this?
I admit that this is a somewhat esoteric way of using computers.<br>But hear me out:
It’s convenient for pair programming: One person can fix a bug in one window, while the other browses the documentation!
It’s fun for games!<br>Using multiple controllers is the norm, why not multiple mice?
This style of multi-player computing facilitates collaboration inside of applications very naturally, without the need for complicated synchronization algorithms.
Summary
Here’s an overview of how well “multi-seat” is currently supported in various software:
Core wayland protocol<br>5 ★★★★★<br>Deeply integrated!
Weston<br>3 ★★★☆☆<br>No easy way to dynamically reconfigure seats.
sway<br>4 ★★★★☆<br>Can’t detach devices from seats (#3491).
niri<br>1 ★☆☆☆☆<br>No support yet (#3159).
River<br>4 ★★★★☆<br>No support for ext-transient-seat-v1 (#1497).
GTK<br>4 ★★★★☆<br>New seats are not registered while app is running.
SDL<br>3 ★★★☆☆<br>No seat information in absolute mouse mode (#16027), seat information only via device name.
wayvnc<br>5 ★★★★★<br>Supports ext-transient-seat-v1.
Table of contents
Terminology<br>Logical seats
Physical seat
The wayland protocol
Wayland Compositors<br>Weston
sway
River
niri
Graphics libraries<br>GTK
SDL
LÖVE
Applications<br>Multi-seat GTK text widget
LÖVE physics playground
Terminal emulators
Browsers
VNC setup
Terminology
I’m going to use the term “seat” a lot in this post.<br>It describes input devices that are grouped together, to be used by the same person.<br>For example, you could have two people in front of one computer, and each one has their own mouse and their own keyboard.<br>In this setup, there would be two “seats”, and every seat has one mouse and one keyboard:
seat0
Laptop touchpad
Laptop keyboard
seat1
External mouse
External keyboard
Careful though – people use this term in two different ways:
Logical seats
The type of seat I’m interested in is sometimes called a “logical seat” .<br>This is where multiple people are in front of one computer, and each have their own mouse/keyboard, but they control the same desktop environment.<br>As in, the desktop shows multiple mouse cursors!<br>The people can “hand over” windows to each other, draw together into a whiteboard application, or directly collaborate within the same software.<br>(Not that all of these things would be possible right now, but, you know, conceptually!)
I think there could be a term that’s describing this concept even better – in the title of this post, I picked “multi-player”, to make clear that it’s mostly about multiple people who are collaborating.<br>I’ve also seen “multi-cursor” or “multi-pointer” (which are missing the keyboard component).
Physical seat
The term “seat” can also mean something else, which is called a “physical seat” :<br>This refers to setups where there are multiple people who all have their own independent setup: A screen, a keyboard, a mouse.<br>They don’t really interact with each other, but the input and output devices are connected to a single computer.<br>This is what Wikipedia is referring to in the Multiseat configuration article.
But this is not what this post is about.<br>If you know more about the current state of support on Linux, I’d encourage you to write your own blog post on it!
Overview
I only investigated the situation on Linux, and specifically on Wayland (a modern graphical display system).<br>X11 (the X Window System) has its own multi-seat extension called Multi-Pointer X (MPX), which I also had a lot of fun with a couple of years ago.
But at this point, I’ve moved on to Wayland compositors in my everyday computer usage.<br>And it turns out that Wayland has great built-in support for multiple seats!
I’ll talk about how to set up a multi-user system, what Wayland protocols are involved, and finally, what the current application support looks like.
The tricky thing is that multi-seat support has to be present at every layer:
The Wayland compositor (which usually contains the window manager).
The wayland protocol.
The GUI library used by the graphical application.
The graphical program itself.
Optionally, if you want to allow...