Multiple Mouse Cursors in Wayland

marvinborner1 pts0 comments

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...

seat wayland multi multiple mouse post

Related Articles