protonscr

Better fullscreen support for multi-monitor setup with different resolutions.

protonopen
ValveSoftware/Proton#6092 · opened 2022-08-14 by adoa · updated 2026-02-18 · 7 comments · github
Aadoa 2022-08-14 github

Feature Request

I confirm:

  • [x] that I haven't found another request for this feature.
  • [x] that I have checked whether there are updates for my system available that
    contain this feature already.

Description

I have two monitors with drastically different resolution.
Primary, left: 3840×2160 @ 60Hz
Secondary, right: 1920×1080 @ 60Hz

Arch Linux & Gnome 3 via Wayland
Radeon RX 580, mesa 22.1.6-1
Steam

When I launch games in exclusive fullscreen, they stretch to fill my primary monitor, irrespective of game resolution. This is expected and fine. However, some games I really want to play at native 1080p on my secondary monitor while capturing the game window via OBS.

The Problem
When I drag a fullscreen game from primary to secondary monitor, the stretching is preserved even if the game renders in 1080p.
As a consequence, I can only see one fourth of the game – which is entirely unusable.
This is irrespective of the screen scaling I set in Gnome.

Positioning the game in windowed mode to fill the secondary screen pixel perfect (und thus hide the decorations) is not an option for me since I also want to capture the output of the game window via OBS.

Games in “borderless windowed” fullscreen are not affected.

Small selection of affected games:

  • Sekiro (314380)
  • Witcher 2 (20920)

Not affected (I assume they render to borderless fullscreen):

  • The Cat Lady (253110)
  • Cuphead (268910)

Games that can switch between fullscreen & borderless:

  • Dark Souls Remastered (570940)
    When in borderless, scaling is correct when positioned on the smaller secondary monitor.
    When in fullscreen, scaling is off when positioned on the smaller secondary monitor.

I accidentally found this workaround, which used to work with Proton 6.3 & Gnome 3:

  1. Set the game to windowed mode at native resolution of the secondary screen.
  2. Position the window pixel-perfect on the secondary screen such that window decorations are invisible and window content fills the entire screen.
  3. Switch to a different virtual desktop of Gnome and then switch back to the virtual desktop where the game is located.
  4. Magically, the game is rendered borderless.

I have no idea how or why this workaround ever worked, nor do I understand why this workaround stopped working with Proton 7.0. In any case, it was never really satisfying for me.

My current workaround involves gamescope. I believe a solution with winecfg could work too.
But seriously this should work out of the box with Steam Play.

References [optional]

Following issues seem to be vaguely related:
#720
#3060
#3600
but I don't understand the internals well enough to really judge that.

Iipr 2022-09-01 github

The way that many games have traditionally worked is:

  • game asks Windows what resolutions are supported and so on
  • game tells Windows to create window, this tells Windows the dimensions (resolutions) and rectangularity of pixel etc.
  • Windows returns a handle of the window to the game, which proceeds to draw on it
  • changing resolution from game will tell Windows to change the dimension of the window -> screen settings don't come into play
  • switching from windowed to fullscreen mode is handled by the game telling what kind of window it wants

So generally speaking games don't expect the screen to change from under it: game is using the dimensions it has started using.

If you want to fix this you would also need the game to understand that dimensions of the window need to be changed or game will render with assumption of different buffer size and so on -> crash if you change that from underneath it.
Otherwise you just need to change game settings when you drag it to a screen with different resolution/shape.

So, I would not hold my breath while waiting for games to work in a situation like this. Do they work that way under Windows? I suspect many will have issues there as well.

Eevertvorster 2023-11-18 github

I have exactly the same problem. Arch linux, monitors with different resolutions, and wanting a steam game to pop up in full screen on the secondary monitor in some cases.

It would be really nice if there was a proton setting in the steam launch options that you could specify the monitor that you would want to launch the game on.

Then when the game starts, it would get the information of the monitor it is supposed to start on, and have the correct resolutions available, and run on the correct monitor.

Ttokudan 2024-03-30 github

if proton would offer an environment variable as a workaround, that would help a lot.
my monitor layout is reversed, I got my small laptop screen (1920x1080) on the left and my main monitor (4k with 2x scaling) on the right.
I'm setting DRI_PRIME=1 anyway, it would be nice if I could set e.g. PROTON_MONITOR=2 or something similar to force proton to only consider that monitor.
As it currently is, pretty much all proton games are unplayable for me.

Eevertvorster 2024-03-31 github

@tokudan You could just turn off or disable the monitor that you don't want to use for the duration that you want to be playing the game. It is a pain, but at least you can play the game you want on the monitor you want.

Ttokudan 2024-04-06 github

@tokudan You could just turn off or disable the monitor that you don't want to use for the duration that you want to be playing the game. It is a pain, but at least you can play the game you want on the monitor you want.

That the kind of solution that haunts me from the early 90s. "Please set [something] in your config.sys and autoexec.bat and reboot your system before attempting to run this game."

DDocMAX 2025-01-01 github

I can't set 1920x1080 resolution in Unreal Tournament 99. Why is it missing?

MMoutonDemocrate 2026-02-18 github

This is still relevant, and still a HUGE pain trying to play with two monitors.

Proton versions

Launch options