Wayland, KDE Plasma, Steam and Vulkan; change screen resolution on game launch

Table of Contents

A launch command to lower the resolution of my primary display from 4k to FullHD when playing Steam games and switch back when I exit the game.

kscreen-doctor output.DP-1.mode.1920x1080@60 ; %command% ; kscreen-doctor output.DP-1.mode.3840x2160@60

Description of my Setup

Since my CPU (Intel(R) Xeon(R) CPU E5-1607 0 @ 3.00GHz) and GPU (AMD Radeon RX 5500 XT) are decent, but not anywhere near powerful enough to play Satisfactory in 4k, I spent a moment hunting down how to run the game under the following combination with resolution lowered to FullHD.

  • Fedora 38 x86_64
  • amdgpu
  • Wayland
  • KDE Plasma
  • Vulkan
  • Proton 8.0-2
  • two screens, set up as follows
screenshot of the Display Configuraton settings dialog to ilustrate how my screens are arranged; 4k main screen and to the left of it a 2560x1440 screen in portrait mode.

Generally this setup handles X11 apps well, but I did not manage to have the game lower the resolution itself to FullHD and still be in fullscreen mode.

Aim

The idea is to switch the main screen from 4k (3840x2160) to FullHD (1920x1080) when I launch the game and back to 4k when I stop playing.

The game itself is set to Fullscreen at Options → Video → Display → Full Screen.

I wanted Vulkan mode because U8 Experimental in DirectX12 mode would sometimes freeze up. No need for a reboot, I could still successfully SIGHUP the game from a terminal, but I’d of course lose all game progress since the last save.

Check Connected Displays

First check what outputs I have;

[pcfe@t3600 ~]$ kscreen-doctor --outputs
Output: 1 DP-1 enabled connected priority 1 DisplayPort Modes: 0:3840x2160@60*! 1:3840x2160@30 2:2560x1440@60 3:1920x1200@60 4:1920x1080@60 5:1920x1080@60 6:1920x1080@60 7:1920x1080@30 8:1920x1080@30 9:1600x1200@60 10:1680x1050@60 11:1600x900@60 12:1280x1024@60 13:1440x900@60 14:1280x800@60 15:1280x720@60 16:1280x720@60 17:1280x720@60 18:1024x768@60 19:800x600@60 20:720x480@60 21:720x480@60 22:720x480@60 23:720x480@60 24:640x480@60 25:640x480@60 26:640x480@60 27:720x400@70 28:1600x1200@60 29:1280x1024@60 30:1024x768@60 31:2560x1600@60 32:3200x1800@60 33:2880x1620@60 34:2560x1440@60 35:1920x1080@60 36:1600x900@60 37:1368x768@60 38:1280x720@60 Geometry: 1440,400 3840x2160 Scale: 1 Rotation: 1 Overscan: 0 Vrr: incapable RgbRange: unknown
Output: 2 DP-2 enabled connected priority 2 DisplayPort Modes: 0:2560x1440@60*! 1:1920x1200@60 2:1920x1080@60 3:1920x1080@60 4:1920x1080@60 5:1920x1080@50 6:1920x1080@24 7:1920x1080@24 8:1600x1200@60 9:1680x1050@60 10:1280x1024@75 11:1280x1024@60 12:1440x900@60 13:1280x800@60 14:1152x864@75 15:1280x720@60 16:1280x720@60 17:1280x720@60 18:1280x720@50 19:1024x768@75 20:1024x768@60 21:800x600@75 22:800x600@60 23:720x576@50 24:720x576@50 25:720x480@60 26:720x480@60 27:720x480@60 28:720x480@60 29:720x480@60 30:640x480@75 31:640x480@60 32:640x480@60 33:640x480@60 34:720x400@70 35:1600x1200@60 36:1280x1024@60 37:1024x768@60 38:1920x1080@60 39:1600x900@60 40:1368x768@60 41:1280x720@60 Geometry: 0,0 1440x2560 Scale: 1 Rotation: 2 Overscan: 0 Vrr: incapable RgbRange: unknown

RunSatisfactory in FullHD when started from Steam

Ok, so the one on DisplayPot connector 1 (DP-1) is the 4k screen.

Since I use gamemode and MangoHud (easily configured with Goverlay) and I want to force Satisfactory into Vulkan mode for this (so that if it does not work I can drop the fiddling and end up in DX12 fullscreen mode again), I ended up configuring these launch options (In Steam at Game Properties → General);

kscreen-doctor output.DP-1.mode.1920x1080@60 ; gamemoderun mangohud %command% -vulkan ; kscreen-doctor output.DP-1.mode.3840x2160@60

Works for me and sets resolution back to 4k when I quite the game. Obviously, if I switch to another virtual desktop while the game is running, then my main screen still only shows FullHD. I’m not fussed because I anyway tend to have the Satisfactory Wiki open on the secondary screen that is in portrait mode.

Stability of Vulkan Mode

So far rock solid on Satisfactory’s Update 8 Experimental branch.