LizardByte / LizardByte/Sunshine

[Linux][Wayland][GNOME/Mutter] Workaround for Native Pen/Touch Support coordinates misaligned with multiple displays

Open
#5,592 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
C++
Stars
41.4k
Forks
2.1k
Avg merge
23h 47m
Merged PRs (30d)
124

Description

Is there an existing issue for this?
  • I have searched the existing issues
Is your issue described in the documentation?
  • I have read the documentation
Is your issue present in the latest beta/pre-release?

This issue is present in the latest pre-release

Describe the Bug

By default on GNOME/Mutter running Wayland, native touchscreen input from Moonlight can be spatially misaligned when multiple displays are connected.

The issue is not specific to Mutter virtual monitors. I encountered it while streaming to a Mutter virtual monitor and XDG Portal Grab, I had previously experienced the same touchscreen misalignment with a physical display created using a dummy HDMI/DP adapter and KMS capture.

Expected Behavior

Touch input should be mapped to the display being streamed, with the touch coordinates corresponding to the same physical/logical positions shown by Moonlight.

With multiple displays connected, touch input should not be offset or interpreted relative to another display.

Additional Context

here is a confirmed workaround on GNOME/Mutter that fixes the touchscreen alignment.

Mutter has a per-device touchscreen output setting that can explicitly associate a touchscreen with a specific display.

For example, on my system:

gsettings set \
  'org.gnome.desktop.peripherals.touchscreen:/org/gnome/desktop/peripherals/touchscreens/1209:0004/' \
  output "['MetaVendor', 'MetaVirtualMonitor', '0x00']"

After assigning the Sunshine touchscreen to the correct output, native touch coordinates from Moonlight are correctly aligned with that display.

The device ID and output tuple are system-specific. The values above correspond to my setup; physical displays will have their own output identity. For example, my Mutter virtual monitor exposes:

['MetaVendor', 'MetaVirtualMonitor', '0x00']

The important part is the explicit association between the Sunshine touchscreen and the output being streamed.

This also indicates that the issue is not inherently caused by virtual displays. I have reproduced the same touchscreen misalignment with a physical display created through a dummy HDMI/DP adapter and KMS capture. The common factor is having multiple outputs while using absolute/native touchscreen input.

The touchscreen itself appears to provide usable absolute coordinates; explicitly changing the Mutter output association changes the coordinate mapping and fixes the problem.

I am not suggesting that Sunshine necessarily needs to implement this exact GSettings mechanism. The purpose of this report is to document the confirmed GNOME/Mutter workaround and provide a concrete lead for determining where the appropriate long-term fix belongs.

There are also reports of similar multi-display touchscreen issues under other Wayland compositors, including KDE Plasma/KWin, but I have not independently verified an equivalent fix there, so I am not making a claim about the KDE implementation.

The main confirmed finding here is:

On GNOME/Mutter Wayland, explicitly mapping the Sunshine touchscreen device to the intended output fixes native touchscreen misalignment with multiple displays.

Host Operating System

Linux

Operating System Version

Arch Linux

Architecture

other, n/a

Package

Linux - flathub/flatpak

GPU Type

n/a

GPU Model

n/a

GPU Driver/Mesa Version

n/a

Capture Method

XDG Portal Grab (FreeBSD/Linux)

Apps

Log output

Online logs

No response

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reproducing native touchscreen input on Linux Wayland with GNOME/Mutter and multiple displays, using the XDG Portal Grab setup described. Compare coordinate behavior before and after assigning the Sunshine touchscreen to an output with the documented GSettings command. Done means touch coordinates align with the streamed display without requiring a system-specific manual workaround.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp, linux
Domain
desktop, operating-systems
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Needs clarification
Newbie friendliness
42/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.