Wrong Monitor in Game (XWayland Multi-Monitor) Hyprland
Problem
Overwatch (and other Proton/Wine games) opened on the correct monitor (Samsung) but reported the wrong display index (Dell) in the game menu. The assignment had to be corrected manually on every start.
Root Cause
hyprctl monitors showed:
- DP-2 (Dell) → ID 0
- DP-3 (Samsung) → ID 1
- HDMI-A-1 (PEAQ) → further ID
Under XWayland all monitors are bundled into a single virtual root output. Games enumerate displays by connector ID from the kernel's DRM detection order — not by physical arrangement or Hyprland layout. The IDs cannot be reliably forced via Hyprland config.
Solution: gamescope
gamescope wraps the game in a virtual single-display compositor. The game sees only one monitor — the display index problem simply does not exist anymore. gamemoderun is added for CPU governor tuning.
Installation
sudo pacman -S gamescope lib32-gamemode
(gamemode was already installed; lib32-gamemode is needed for full Proton compatibility.)
Steam Launch Options
Overwatch → Properties → Launch Options:
gamemoderun gamescope -W 3840 -H 2160 -r 240 -f -- %command%
Flag Reference
| Flag | Description |
|---|---|
gamemoderun |
Outside gamescope — applies GameMode to both gamescope and the game process |
-W 3840 -H 2160 |
Output resolution (native Samsung 4K) |
-r 240 |
Target refresh rate in Hz |
-f |
Fullscreen |
-- %command% |
Steam appends the Proton call here |
Performance Variant (FSR Upscaling)
If OW at 4K/240 is unstable — render internally at a lower resolution and upscale with FSR:
gamemoderun gamescope -W 3840 -H 2160 -w 2560 -h 1440 -r 240 -F fsr -f -- %command%
| Flag | Description |
|---|---|
-w 2560 -h 1440 |
Internal render resolution (1440p) |
-W 3840 -H 2160 |
Output resolution on monitor (native 4K) |
-F fsr |
AMD FidelityFX Super Resolution upscaler |
Verification
While the game is running, in a terminal:
gamemoded -s
Should print gamemode is active.
Portability
The same approach works for any Proton/Wine title on Steam — set launch options per game. For non-Steam launchers (Lutris, Heroic, Bottles) use the equivalent "pre-launch command" or wrapper field.
No comments to display
No comments to display