How to use Gamescope on Linux to get the most out of your games

Last update: 25/05/2026
Author Isaac
  • Gamescope is a microcomposer from Valve focused on games that allows you to fake resolutions, limit FPS, and apply FSR/NIS scaling.
  • It works best with updated AMD and Intel GPUs, while with NVIDIA it requires recent drivers and extra settings such as nvidia_drm.modeset=1.
  • It can be integrated with Steam, Wine/Proton and Flatpak, controlling parameters from the command line or managers such as Lutris and Bottles.
  • It includes advanced features such as HDR, VRR, Mangoapp and PipeWire recording, although it has some known bugs with documented solutions.

Gamescope on Linux

If you use Linux for gaming and have heard of Steam Deck, Proton , HDR, FSR, and other such terms, you've probably also heard of GameScope. This small "microcomposer" developed by Valve has become one of the key tools for getting more performance and image quality from games on GNU/Linux, both native games and those that run with Wine or Proton.

Although it might seem a bit daunting at first (it's terminal-based, has a ton of parameters, and the official documentation isn't always the most user-friendly), once you grasp the logic, Gamescope becomes an incredibly useful tool for improving compatibility, performance, and visual appearance . In this comprehensive guide, we'll explore what it is, its exact purpose, how to install it, and how to use it in various scenarios (Steam, Wine, Flatpak, etc.). We'll also cover tips, common problems, and how it works with AMD, Intel, and NVIDIA.

What is Gamescope and how does it fit into your Linux desktop?

Gamescope is essentially a microcomposer optimized for games , created by Valve to power the Steam Deck's Big Picture mode and gaming environment. It acts as a sort of "intermediary layer" between the game and your desktop, managing how the image is displayed, what resolution the game sees, and what final resolution is output to your monitor.

Unlike a traditional desktop compositor (such as KWin in KDE or Mutter in GNOME), Gamescope is very lightweight and focused entirely on the gaming environment . It prioritizes providing an isolated gaming session over desktop integration, with support for:

  • Spoofing or falsification of resolutionsThe game thinks it's in one resolution, but you're displaying it in another.
  • Scaling by AMD FidelityFX Super Resolution (FSR) o NVIDIA Image Scaling (NIS).
  • Framerate limits very fine (30, 60, 120 FPS, etc.) and refresh rate control.
  • Support for HDR10 when the system and panel allow it.
  • Chronic Disease VRR / Adaptive-Sync for monitors with variable refresh rate.

From a practical standpoint, Gamescope runs as a nested session on top of your desktop : you remain in KDE, GNOME, etc., but when you launch a game within Gamescope, that game "lives" inside a virtual window or screen managed by this microcomposer. It can also be used in "embedded" mode, occupying the entire screen, which is how SteamOS does it in the Steam Deck.

Furthermore, Gamescope can work in both Xorg-based and Wayland-based environments. By default, it acts as a standalone layer , but it has specific options for exposing a Wayland backend when needed.

Using Gamescope with games on Linux

Requirements and compatibility with AMD, Intel, and NVIDIA

Before you rush into using it, it's important to understand that Gamescope is heavily dependent on your system's graphics stack , especially Mesa and NVIDIA drivers. For practical purposes, these are the minimum requirements recommended by the documentation and community experience:

  • AMD GPUs: it is recommended to have Table 20.3 or higher.
  • Intel GPUs: it is suggested Table 21.2 or higher.
  • NVIDIA GPUs: It is necessary to use the proprietary driver version 515.43.04 or higher and start the kernel with the parameter nvidia_drm.modeset=1.

With AMD and Intel, support is usually much more comprehensive, especially if you use Wayland and updated Mesa drivers. With NVIDIA, things are more complicated : although recent driver versions have improved considerably, compatibility issues can still arise, such as windows not rendering correctly in Flatpak, problems with certain GBM backends, and so on.

If you're wondering "does it work with Intel?", the answer is yes, but you'll need relatively recent drivers , and it's recommended to be using a distribution that hasn't fallen too far behind Mesa. On laptops with a recent Intel iGPU and an updated kernel, Gamescope usually performs very well.

On systems with very old hardware (AMD, Intel, or NVIDIA), you might encounter graphical bugs, color corruption, or missing extensions . In these cases, it's worth checking your distribution's documentation and, if possible, updating the kernel and Mesa before blaming Gamescope.

How to install Gamescope on different distributions

The way to get Gamescope depends largely on the distribution you use. In some, it comes pre-packaged , in others you have to use community repositories, and in more "hardcore" cases, you have to compile it from the source code hosted on GitHub.

Installation from repositories (the recommended option)

If your distro has an official package, that's always the first thing you should try. It saves you headaches with dependencies, patches, and unusual paths . Some typical examples:

  • Arch Linux / derivatives (EndeavourOS, Manjaro, CachyOS…): package gamescope in official repositories. Furthermore, there is lib32-gamescope-plus in AUR with additional patches.
  • Fedora, Bazzite, NobaraIn many cases, it's already included or available in the repositories. Bazzite and Nobara, being very gaming-oriented, They have particularly well-designed support for Gamescope..
  • SteamOSGamescope is part of the system itself; it is the central piece of the Steam Deck's game mode.

In these distributions, a simple command from the package manager gets everything ready. For example, in Arch :

sudo pacman -S gamescope

Or on systems with Flatpak, if you want the layered version of Vulkan for sandbox applications, you can install:

flatpak install flathub org.freedesktop.Platform.VulkanLayer.gamescope

Compile Gamescope from source code

On distributions where there's no updated package (Linux Mint, some Ubuntu-based distributions, etc.), you might have to compile Gamescope from GitHub . The official documentation isn't always user-friendly, but the general process is:

  1. Clone the Gamescope repository.
  2. Initialize submodules.
  3. Configure the project with Meson.
  4. Compile with Ninja.
  5. Install with Meson.
  FC 26 PC Requirements: Complete Compatibility and Settings Guide

The commands are usually something like this (they may vary slightly depending on the repository and branch):

git submodule update --init
meson build/
ninja -C build/
meson install -C build/ --skip-subprojects

It is important that you have the necessary development dependencies installed. (Vulkan, EGL, Wayland, XCB, etc.), which vary slightly depending on the distribution. If you compile on Linux Mint or Ubuntu, you'll probably need to install quite a few of lib*-dev before Meson lets you move forward.

If you're relatively new to Linux and get stuck with compiling, it might be more practical to use a gaming-oriented distro (like Nobara, Bazzite, or even SteamOS in desktop mode) where Gamescope is already integrated or installed with a simple package.

How to use Gamescope: basic parameters and examples

Once installed, using Gamescope always follows the same pattern: you call the binary gamescope with a series of parameters and, in the end, you launch the gameThat last part can be a direct executable, a Wine command, or the bookmark. %command% from Steam.

The built-in help is very extensive, so it's always a good idea to take a look at:

gamescope --help

But to begin with, we'll stick with the most common options, which control internal resolution, external resolution, refresh rate, screen mode, scaling, and some other things.

Native resolution, FPS limit, and full screen

A typical example that is often seen when launching games from Steam might be:

gamescope -W 2560 -H 1440 -r 120 --adaptive-sync -f -- %command%

In this case, the command causes the game to run in a GameScope session whose "virtual screen" has 2560×1440 pixels at 120 Hz. Let's break it down:

  • -W 2560 -H 1440These settings define the Gamescope's output resolution, which is what the monitor sees. This should normally match your screen's actual resolution.
  • -r 120: sets the refresh rate to 120 Hz and also, de facto, a 120 FPS limit for the game.
  • --adaptive-sync: forces the use of VRR (Variable Refresh Rate) when the monitor supports it; in some Wayland sessions it doesn't always have an effect, but it's worth trying.
  • -f: Launches the Gamescope window in full-screen mode.
  • -- %command%: to the right of -- Here's the actual game command; on Steam, %command% It is the marker that represents the executable with its usual parameters.

On some desktops (such as KDE Plasma), -f It works better than borderless mode.while in other environments there may be people who prefer to use -b for “borderless fullscreen”. It's a bit of a trial-and-error process.

Internal resolution and scaling (FSR, NIS, nearest…)

The magic of Gamescope is most noticeable when You play with the difference between internal and external resolutionThat's what the options combo is for. -w, -h (internal resolution) and -W, -H (virtual screen resolution).

For example, you can run a game internally at 1920×1080, but display it at 2560×1440 with FSR, to gain FPS without losing too much sharpness:

gamescope -W 2560 -H 1440 -w 1920 -h 1080 -F fsr -r 120 --hdr-enabled --adaptive-sync -f -- %command%

In this case:

  • -w 1920 -h 1080The game thinks it's in 1920x1080.
  • -W 2560 -H 1440The scaled image is displayed at 2560×1440.
  • -F fsr: activates scaling by AMD FSR1.0 within Gamescope.
  • --hdr-enabled: announces HDR support for the game, necessary when you want to use HDR10 with Proton or natively.

You can also use NIS (NVIDIA Image Scaling) instead of FSR:

gamescope -w 1920 -h 1080 -W 3840 -H 2160 -F nis -- supertuxkart

In addition, Gamescope supports other scaling modes:

  • -S integerFull scale, ideal for pixel-art games.
  • -S stretch: stretches the image to fill the entire screen.
  • -F nearestNearest neighbor filtering, perfect if you want a "pixelated" style without weird smoothing, very useful in classic JRPGs and retro titles.

Filters and scaling modes can be changed on the fly with keyboard shortcuts, so there's no need to close the game to experiment and see what looks best:

  • Super + N: enable/disable nearest filtering.
  • Super + U: activate/deactivate FSR.
  • Super + Y: activate/deactivate NIS.
  • Super + O: increase the FSR sharpness by one point.
  • Super + I: lower the FSR sharpness by one point.

Framerate control, HDR, VRR, and other useful options

A very powerful aspect of Gamescope is its ability to lock into the FPS rate you want, thus avoiding large fluctuations that ruin the feeling of smoothness or increase power consumption on laptops.

To limit it to 30 FPS, for example, something like this would suffice:

gamescope -r 30 -- %command%

Addition --hdr-enabled As we have already seen, it is worth remembering:

  • --adaptive-sync- Activate VRR if your monitor allows it.
  • --expose-wayland: exposes a Wayland backend for clients who need it; useful in some cases of compatibility problems.
  • --force-grab-cursor: very practical when The game doesn't capture the cursor properly.For example, when the camera is limited to a certain angle or the mouse does not disappear when entering the game.
  • --fullscreen (o -f): launches directly into full screen, something that even serves as a workaround for certain games that crash if Gamescope doesn't go into fullscreen from the start.

Another interesting parameter is --sdr-gamut-widenessOriginally designed for the Steam Deck. It allows adjust how "wide" the SDR color gamut is, resulting in a warmer or more saturated image depending on the value (between 0 and 1):

gamescope --sdr-gamut-wideness 1 -- %command%

Using Gamescope with Steam, Wine/Proton, Flatpak, and game managers

One of the great advantages of Gamescope is that it integrates relatively well into almost all common Linux gaming workflows : Steam, Wine, Lutris, Bottles, PlayOnLinux, and even Flatpak applications.

From a normal desktop session

If you're on your desktop (KDE, GNOME, etc.) and want to try something quick, you can launch a game directly under Gamescope from the terminal . For example:

gamescope -W 1920 -H 1080 -r 60 -- supertuxkart

The game will open in a window or screen controlled by Gamescope, respecting the parameters you have set . When you close the game, the Gamescope session will also close.

  How to access and update firmware (BIOS/UEFI) settings from Linux using systemctl and systemd

Launch Steam games with Gamescope

On Steam, it's common to use the game's launch options (useful if you need Install Windows games with Steam on Linux). Add the Gamescope command and leave it at the end -- %command% so that Steam can inject the game executable there with its usual parameters.

A minimal example would be:

gamescope -- %command%

But in practice, you'll almost always want to set resolutions and FPS:

gamescope -W 1920 -H 1080 -r 60 -- %command%

Note that if you do not specify resolution or refresh rateGamescope might start at a resolution that doesn't suit you, especially if you have multiple monitors or unusual setups. That's why it's a good idea to be explicit with -W, -H y -r.

In the case of native Linux games within Steam, some users have reported crashes when they try to play them. Open them with Gamescope only for that game (especially with NVIDIA or with certain kernel and driver combinations). Sometimes, a temporary solution is Run the entire Steam application within GamescopeAlthough it's not ideal for everyday use. In other cases, switching to a fullscreen configuration with -f and use --force-grab-cursor can help.

Wine, Proton, and games with injected DLLs

With Wine, the process is the same: Gamescope comes first, then the Wine command, and finally the Windows executable . For example:

gamescope -W 1920 -H 1080 -r 60 -- wine supertuxkart.exe

If you need to inject DLLs with WINEDLLOVERRIDES (for example, for mods that use) dinput8.dll), you can combine them with Gamescope in Steam's own launch option or in your Wine manager's script:

WINEDLLOVERRIDES="dinput8.dll=n,b" gamescope -W 2560 -H 1440 -w 1920 -h 1080 -F fsr -r 120 --hdr-enabled --adaptive-sync -f -- %command%

The trick is to declare the environment variables before calling gamescopeso that everything is correctly inherited by the game process.

Gamescope with Flatpak (Steam, Wine managers, etc.)

If you use Steam in Flatpak or a containerized Wine manager, you can also take advantage of Gamescope. First, install the Gamescope layer using Flatpak :

flatpak install flathub org.freedesktop.Platform.VulkanLayer.gamescope

After that, in most cases, you'll use it just like a system package: through the app's own options or by adjusting the command line . However, with NVIDIA, there might be problems because Gamescope in Flatpak doesn't properly locate the GBM backend of the proprietary driver.

When the window doesn't appear or you see black screens, there's a typical workaround: overwrite the variable GBM_BACKENDS_PATH within Flatpak pointing to the path of the NVIDIA driver installed on the system. Something like:

flatpak override --env=GBM_BACKENDS_PATH=/usr/lib/x86_64-linux-gnu/GL/nvidia-XXX-YY-ZZ/extra/gbm packageid

Here packageid is the Flatpak identifier of the program you want to use (Steam, Bottles, etc.), and nvidia-XXX-YY-ZZ This is the specific version of your driver. This solution must be repeated and the path adjusted each time you update your NVIDIA drivers.

Advanced features: Mangoapp, recording, priority settings, and more

In addition to the basics, Gamescope offers a handful of advanced features that make a difference in more demanding setups , especially when you want to monitor performance or record gameplay.

Overlay information with Mangoapp (MangoHud for Gamescope)

If you're used to using MangoHud to view FPS, GPU load, and other metrics, you should know that the standard MangoHud doesn't work well with GameScope if you apply it directly to the game. For these situations, there's Mangoapp , which is the proper way to overlay the HUD when GameScope is involved.

The key is to use the argument --mangoapp when launching Gamescope, so that The overlay runs on top of Gamescope instead of on top of the applicationThis is especially important if you want to see FSR, HDR, and other compositor-related features.

Record Gamescope output with PipeWire and GStreamer

Gamescope exposes its video output as a PipeWire node , meaning you can record exactly what the game sees using tools like GStreamer. A complex but illustrative example would be:

gst-launch-1.0 --eos-on-shutdown \
  pipewiresrc do-timestamp=true target-object=gamescope ! vaapih264enc ! h264parse ! mux. \
  pulsesrc do-timestamp=true device="Recording_$(pactl get-default-sink).monitor" ! opusenc ! mux. \
  matroskamux name=mux ! filesink location=recording.mkv

Here, the video from Gamescope is captured via PipeWire, and the audio is captured from the PulseAudio monitor, all synchronized within a Matroska container. It's not the most user-friendly command in the world , but it demonstrates that Gamescope integrates well into professional capture pipelines.

Useful keyboard shortcuts

While playing, you can control certain aspects of Gamescope without leaving the game. In addition to the FSR/NIS keys already mentioned, it's worth remembering the following:

  • Super + F: toggle full screen.
  • Super + S: capture a screenshot, which is saved in /tmp/gamescope_$DATE.png.

Thanks to this, you can try out scaling modes and captures on the fly without changing launch parameters each time.

Common problems and how to solve them

Like any piece of software that directly impacts the graphics stack, Gamescope isn't immune to bugs and unusual behavior . The good news is that many of these have been identified and have relatively simple solutions or workarounds.

The cursor is not being captured properly or is behaving strangely.

A fairly common problem, especially in games using Proton/Wine, is that the cursor doesn't disappear or the camera's movement is restricted . In these cases, the classic solution is to add the following to the command:

--force-grab-cursor

In this way, Gamescope forces the mouse to be captured within the window , which usually fixes infinite camera rotations, invisible stops, and other peculiar behaviors.

  EA and Microsoft may be interested in Ubisoft franchises

Performance drop when switching to full screen with the shortcut

There is a known bug when using the Meta/Super + F shortcut to switch to fullscreen : some users notice a significant drop in performance right after activating that mode.

The way to dodge it is very simple: Instead of relying on the shortcut, start the game in full screen. using the flag -f o --fullscreen in the Gamescope command itself. This avoids the problematic transition.

Process priority and stuttering due to missing CAP_SYS_NICE

If when launching Gamescope you see a message like this in the terminal:

No CAP_SYS_NICE, falling back to regular-priority compute and threads.
Performance will be affected.

This means that Gamescope does not have the necessary permissions to properly adjust the priority of its threads , and that can cause stuttering and worse-than-expected performance.

The solution is to grant the capacity CAP_SYS_NICE to the executable:

sudo setcap 'CAP_SYS_NICE=eip' $(which gamescope)

Following this, Gamescope will be able to better manage the priority of its rendering threads , reducing micro-cuts and stutters in heavy scenes.

Corrupted image on Intel GPUs

On some systems with Intel graphics, especially with certain kernel and Mesa combinations, the image output by Gamescope may display strange colors or artifacts . One solution that has worked for many people is to disable "lossless color compression" using an environment variable:

INTEL_DEBUG=noccs gamescope ...

This slightly increases memory usage, but it usually cleans up the video output and prevents color corruption.

VRR with HDR causes frame rate instability

Another subtle issue arises when VRR and HDR are used separately , but when both are enabled simultaneously, the frame rate becomes very unstable. This is a known problem with certain HDR compositing times in embedded mode.

On AMD hardware, one workaround is to use AMD's experimental color management (AMD private color), which leverages hardware planes to compose the final image. This requires:

  • Kernel 6.8 or higher compiled with -DAMD_PRIVATE_COLOR,
  • or specific packages such as some patched kernels (for example, eglinux-amd-color variants in some distros).

In any case, if you don't want to complicate things, you can choose to use only VRR or only HDR until your graphics stack can handle the combination of both.

High probing rate mice that cause microcuts

It has been observed in some systems that mice configured to very high polling frequencies (e.g., 4000 Hz) can cause stutters or minor freezes when moved within the Gamescope window.

The practical solution is simple: lower the polling rate to 1000 Hz (or less) from the mouse software or system settings. In most cases, this is enough to eliminate the problem without any noticeable difference in the perceived control.

Swapchain errors and incorrect use of MangoHud

When attempting to use the classic MangoHud on games released on Gamescope, swapchain errors may occur and other image display errors. This is almost always due to not using Mangoapp with the flag --mangoapp.

The recommendation in these cases is clear: forget about injecting MangoHud as usual and switch to using Mangoapp following the specific instructions for Gamescope.

“Lag bomb” when launching Gamescope from Steam (~24 minutes)

One particularly rare bug that some users have noticed is that, when using Gamescope launched from Steam , after about 20-25 minutes there is brutal stuttering, as if the whole system were dragging.

The solution that is yielding the best results is:

  • Activate the Steam Overlay with the option -e from the client, or
  • overwrite the variable LD_PRELOAD leaving it empty when launching Gamescope.

For example:

LD_PRELOAD="" gamescope -- %command%

Or, if you want to restore some Steam functions within the game, you can unassign LD_PRELOAD in Gamescope and then reassign it to the game executable :

env -u LD_PRELOAD gamescope -- env LD_PRELOAD="$LD_PRELOAD" %command%

It's not a perfect solution, but it allows you to work around the problem while it's being fixed at the client or Gamescope level.

Other known failures

There are also a number of less frequent but documented bugs:

  • Games that will close if Gamescope is not launched in fullscreen: it is recommended to add --fullscreen And, if the camera rotates on its own indefinitely, combine it with --force-grab-cursor.
  • Fast cycling framebuffers in OpenGL/32-bit games with NVIDIAThere are reports on the Gamescope bug tracker; for now there is no definitive fix and it depends a lot on the driver and version.

In any case, if you encounter unusual problems, it's worth checking the Gamescope GitHub repository and the ArchWiki , where most issues and their possible solutions are compiled.

After all this, it's clear that Gamescope isn't just a Steam Deck "trick," but a powerful tool for any Linux gamer who wants to force resolutions, take advantage of FSR or NIS, precisely limit FPS, enable HDR, and tame performance on both AMD/Intel GPUs and, with a bit more patience, NVIDIA GPUs. While it requires some getting used to the terminal and a certain familiarity with the Linux graphics ecosystem, once configured, it offers a layer of control and compatibility that many games simply don't provide natively, and it can make all the difference on 144Hz monitors as well as laptops where battery life and smooth gameplay are more important than squeezing every last pixel out of the screen.

What is Valve's Proton?
Related articles:
What is Valve's Proton and how is it revolutionizing gaming on Linux?