FAQ - canonical/steam-snap GitHub Wiki
Terms
Native: a native game is a game that runs on Linux without any compatibility libraries like Proton. This generally means the game developer specifically built a version of the game for Linux systems and is usually the "best" form of the game.
Proton: Proton is a compatibility layer, made by Valve, for Steam on Linux that emulates a Windows environment using tools like Wine. Proton allows Windows-exclusive games to run on Linux systems. You can force native games to use Proton instead, but generally native is better if available.
Steam Deck verified games are verified by Valve to work on the Steam Deck (Linux-based) and should work on desktop Linux distributions.
ProtonDB is a great resource for finding community information about specific games and their playability.
To filter your own library (by Steam Deck Verification), go to your Steam Library tab and click the penguin (Tux) to show games that run on Linux. Alternatively, click the advanced filtering options button, expand the drop-down under Hardware Support, and choose a level of verification to filter by.
Proton/Steam Play isn't always necessary, if the game installs and runs without Proton, it is native and likely works the best without Proton.
Steam > Settings > Steam Play
Enabling Steam Play will automatically download Proton compatibility libraries for non-native games. If left disabled, only Native games can be installed and played.
'Enable Steam Play for supported titles' enables compatibility tools for games verified by Valve to work well on Linux.
'Enable Steam Play for all other titles' enables compatibility tools for all non-native games in your library. Unsupported titles greatly vary in functionality, check ProtonDB for more info on specific games.
Right click the game > Properties > Compatibility > Check 'Force the use of...' > Choose a Proton version
ProtonDB will show 'Native' if the game is a native game, otherwise it is a Proton game.
Additionally, disabling Steam Play entirely will then only then allow you to install/play native games.
Proton GE instructions for reference.
- Run Steam at least once
- Create the
compatibilitytools.d
directory
mkdir -p ~/snap/steam/common/.steam/root/compatibilitytools.d
- Extract custom Proton versions to the above directory
- For example, proton-ge
- Run Steam, and you should be able to select your custom version from the Proton version dropdown like normal
It is recommended to install the 32-bit NVIDIA drivers alongside your usual 64-bit NVIDIA drivers for the best experience.
To install on Ubuntu, run:
sudo dpkg --add-architecture i386
sudo apt update
sudo apt install libnvidia-gl-<YOUR_DRIVER_VERSION>:i386
Replace <YOUR_DRIVER_VERSION>
with your NVIDIA driver version. This can be found in nvidia-smi
or something like glxinfo -B
.
Switch between graphics modes with sudo prime-select <mode>
and reboot. For games to use your graphics card, prime-select
should be set to nvidia
or on-demand
. Show your current graphics mode with sudo prime-select query
. Note: exclusively using a discrete graphics card (nvidia
option) will use more power than normal.
To view programs using your GPU as well as power usage and other information, run nvidia-smi
. If a game is correctly using your GPU, a listing should appear in nvidia-smi
after it has started running.
If a game is not using your NVIDIA GPU by default, then it may be worth trying to pass NVIDIA's environment variables in as launch options for the game. For example:
__NV_PRIME_RENDER_OFFLOAD=1 __GLX_VENDOR_LIBRARY_NAME=nvidia %command%
Usually you can find what kind of GPUs your computer has by running
lspci | grep VGA
For example,
00:02.0 VGA compatible controller: Intel Corporation CoffeeLake-H GT2 [UHD Graphics 630] (rev 02)
01:00.0 VGA compatible controller: NVIDIA Corporation TU117M [GeForce GTX 1650 Mobile / Max-Q] (rev a1)
means I have an integrated Intel graphics card (UHD Graphics 630) that is included with my CPU, as well as a discrete/dedicated NVIDIA graphics card (GTX 1650).
In Steam, enter Big Picture Mode (next to the close and minimize buttons on the top right of the client), then go to Settings > Controller
. You should be able to enable configurations for your controller type and see your controller appear in the list. If not, make sure the following plugs are connected (these will likely already be connected automatically):
-
joystick
:snap connect steam:joystick
-
hardware-observe
:snap connect steam:hardware-observe
-
uinput
:snap connect steam:uinput
You may also (but usually shouldn't) need to install the steam-devices
deb package on your host system, e.g. sudo apt install --no-install-recommends steam-devices
.
The Snap relies on the gaming-graphics-core22 Snap for graphics packages (see snap connections steam
). You may switch gaming-graphics-core22 to a different channel to use different versions of mesa and other graphics libraries.
Currently, the channels are oibaf-latest
(bleeding edge), kisak-fresh
(new, but stable), and kisak-turtle
(most stable). Switch between them with the following:
snap refresh gaming-graphics-core22 --channel <channel>
MangoHUD support is experimental and will likely only work with OpenGL games. Please do not open issues relating solely to MangoHUD compatibility.
Add mangohud %command%
to your game launch options.
You may add configuration options to your launch options by specifying the MANGOHUD_CONFIG
environment variable in your launch options. For example, MANGOHUD_CONFIG=time mangohud %command%
.
- Run
snap run --shell steam
- Make the MangoHUD config directory:
mkdir -p ~/.config/MangoHud
- Copy the default config file:
cp $SNAP/usr/share/doc/mangohud/MangoHud.conf.example ~/.config/MangoHud/MangoHud.conf
- Edit
~/.config/MangoHud/MangoHud.conf
to your liking - Run MangoHUD like usual
Steam will update itself like it normally does. If the Steam Snap is updated, the Snap will be updated automatically. However, you can force an update immediately by running snap refresh steam
.
snap info steam
Your revision is the number at the end by installed:
in parenthesis. For example, installed: 1.0.0.74 (39) 371MB -
means 39 is my revision.
snap info snapd
Your revision is the number at the end by installed:
in parenthesis.