Multiple Monitor Resolutions with Proton

6 December 2021

Linux

Abstract

Multi-monitor gaming is already a niche experience on Windows, and a cursory glance shows that Nvidia requires using Surround, and AMD requires Eyefinity. Both of these are only supported in Windows. The Arch Wiki points to a TwinView solution for Nvidia cards on Linux, but that is limited the 2 monitor usecase only. Xinerama looks like the only solution, but I only wanted this behavior when playing a couple of games, and setting up dynamic layouts in X was not something I was interested in doing. I figured out how I could do this with proton/wine on an application specific basis, and since it took me a while to figure this out, I figured I’d share this knowledge to anyone else who might need it.

Proton to the Rescue

While I’m going to explain how to do this with Proton, in reality, this can be done entirely with wine. The only difference is that instead of letting proton automatically handle the prefixes for each application, you’ll be in charge of managing the prefixes on your own.

On top of that, we’ll be making use of a tool called protontricks. This tool is very similar to winetricks, but will enable isolating configuration changes on a per steam game basis. The installation instructions are available here. It should be available through your package manager; for example on a debian based installation:

$ sudo apt install protontricks

The game I’m going to use as an example is Dirt Rally 2.0 launched through steam. I’m trying to configure things in such a way that I can render across all 3 of my 1080p monitors, so the total resolution should be 5760x1080. The first prerequisite is that if you’re using steam, make sure that the game is set to launch with proton, and that you’ve launched it at least once. If you’ve done that, you’ll first need to find the SteamID of the game you’re interested in. I normally head over to steamdb and search for the game in question. The field that you’re interested in, is App ID – for Dirty Rally 2.0, this value is 690790.

Steamdb Screenshot
Steamdb page for Dirt Rally 2.0

Once that’s been identified, we can use protontricks to configure how wine will launch for our game; simply run the following command, replacing the App ID with the matching one for the game that you wish to run in fullscreen:

$ protontricks 690790 winecfg

This command might take a second to execute, but eventually, it should spawn a window name “Default - Wine Desktop”. Within this window, there should be a Windows style “Wine configuration” dialog.

Wine configuration dialog
Wine configuration dialog.

Simply click on the “Graphics” tab of this dialog box, and from there, there’s only 2 values you need to pay attention to:

  1. Make sure the “Emulate a virtual desktop” checkbox is checked.
  2. Make sure the “Desktop Size” text entry matches the full resolution of the combined displays.
Graphics configuration page
Wine's desktop graphics configuration page.

From there once you launch the game, the game will launch in a window that will be resizable up to the specified desktop size. Simply expand the window to fill the entire size of the desktop and you’re good to go!

Triple Monitor Render
Dirt Rally 2.0 rendering across all 3 monitors

8