Gaming on Linux

by Perroboc

4 min read

This is not much of a list of workarounds, and might even help gamers in other platforms.

TL;DR tips are included as blockquotes

Almost everything works now

Want to know if a game runs on Linux? Give it a try first! And THEN check websites if you have issues.

By now, almost everything works out of the box. What doesn't, though, seems to be actively enforced by the developers.

ProtonDB lists 87% of its games as Silver status or better, and the other 13% are 9 borked games, and 19 bronze games.

Games usually don't work because of Anti-cheat software depending of a Windows Kernel. Valve works closely with anti-cheat software developers to enable linux compatibility, but sometimes game developers just don't want to support another OS like Linux.

You can check the following sites to get some information about a particular game.

  • ProtonDB: Crowd knowledge base of games running on Steam Deck and other Desktop Linux experiences. Great to see some tinkering tips if a game needs them.
  • Are We Anti-Cheat Yet?: A website to keep track of which software has enabled their anti-cheat software to work on Linux, or plans to.

Just use steam

Use steam whenever possible on Linux! They're actively working on this!

I have games on Steam, GOG, and Epic. I've ended up buying free Epic games on Steam because they just work better (Star Wars Squadrons), as they have worked out way to make the Publisher launchers (EA, Ubisoft) work out of the box.

Here's a table showing which Publisher launchers work where:

Store Linux client Launcher Works?
Steam Steam EA Most of the time*
UPlay (Ubisoft) Most of the time*
Epic Heroic EA No
UPlay Most of the time*

*: Sometimes the Publisher breaks the compatibility, and its up to Valve to fix it back into Proton.

Stick to the Windows version if possible

If a game has a native Linux version, force the use of its Windows version.

Most game developers build a Linux release and then forget about it, while keeping the Windows release up to date. This presents a problem because sometimes that Linux version doesn't even run correctly.

To mitigate this, I usually just use Windows builds when playing steam games. To do this, I check in protondb.com if the game has a native Linux build, and if so, I force the use of the latest Proton version available. That way, steam downloads the Windows build and launches it using Proton.

As an added bonus, some native Linux games don't work very nice with the Steam Deck's suspend system. But they work great with it when using Proton! (e.g. Dead Cells)

Use gamescope if you face issues

The use of gamescope makes the desktop experience as sweet as on a Steam Deck

By using gamescope I've been able to fix FPS issues, and also full screen problems. My rule of thumb is to run the game using gamescope if I experience any issues out of the box.

The Steam Deck uses it by default on Gaming Mode, and I use it extensively on my Desktop setup.

In Arch, I use the Arch repo version.

Desktop use

gamescope works either in a nested configuration (as in nested in another composer), or in an embedded configuration, being the only composer. For a Desktop configuration, nested is enough.

After installation, just edit the Launch options of the game in question.

This is what I go by with my 1080p 144Hz monitor:\ gamescope --nested-width 1920 --nested-height 1080 --nested-refresh 144 --output-width 1920 --output-height 1080 --fullscreen -- %command%

If you think that's too much of a command line, this does roughly the same:\ gamescope -h 1080 -H 1080 -r 144 -f -- %command%

Some things are missing

Even though it's great to use gamescope, it's still missing some features I'd like to have:

  • Since it behaves like a virtual desktop in a window, you can't use the clipboard from the host. Related issue
  • If the mouse pointer is captured by gamescope, you can only unlock the capture by pressing the super key, or alt+tab. Related issue
  • It doesn't use Wayland yet, so XWayland is a requirement for now. Related issue

Launch Options

You can edit a game's launch options by going to its Properties settings, at the bottom of the window:\ Alt text

It's not that games require these on linux, but these settings are useful from time to time, and its good to know you can edit them.

About %command%

In steam, whenever you see %command%, it's the game's executable to be launched by steam.

You can set some environment variables before it, or even wrap the launch command with another executable like gamescope!

If you're only setting arguments (like -nosplash), it's not necessary to include it.

Common launch options

  • Use a custom dinput8.dll file, commonly used for modding
    • WINEDLLOVERRIDES="dinput8=n,b" %command%

Game specific launch options

  • Borderlands:
    • -nostartupmovies -nosplash
  • Borderlands 2, pre-sequel:
    • -nostartupmovies -nolauncher -nosplash
  • Borderlands 3:
    • -notexturestreaming -nostartupmovies -nosplash
  • Divinity: Original Sin 2:
    • --skip-launcher