Gamescope flags: a complete reference
Every option on Gamescope's command line, grouped by job, with its default, accepted values, and an example. Checked flag by flag against the option table and help text in Gamescope's source.
· 10 min read
The command shape
Options come first, then a bare --, then the program to run inside the session:
gamescope [options] -- <command>In Steam's launch options the command is %command%, so the line is gamescope [options] -- %command%. Heroic and Lutris append the game for you, so the prefix ends at --. Both the short and the long spelling of each option are listed below.
Verified against: Gamescope master at commit 6b4481c (September 20, 2026), where src/main.cpp was last changed by commit ce66094 (September 16, 2026). The newest release tag at that point was 3.16.29. Every flag below is in the gamescope_options[] table in that file; descriptions follow its help text and the README. The list was also compared with gamescope --help from a 3.16.28 install.
Check the flags your install has
Distribution packages trail master, so your build may lack the newest options. Ask the binary:
gamescope --help
gamescope --version-h is not help. It is the short form of --nested-height and expects a number. One difference found while checking this page: the sgsr filter is in master and in the README, but a 3.16.28 build lists only linear, nearest, fsr, nis, pixel. An unknown flag or value makes Gamescope exit with See --help for a list of options, which in Steam looks like a game that never starts.
Output and game resolution
Uppercase is what your display gets. Lowercase is what the game draws.
| Flag | What it does | Default / values | Example |
|---|---|---|---|
-W, --output-width | Width of the Gamescope window or fullscreen output. Ignored in embedded mode | 1280 | -W 2560 |
-H, --output-height | Height of the output. With -H alone, a 16:9 width is assumed | 720 | -H 1440 |
-w, --nested-width | Width the game sees and renders at | Same as -W | -w 1920 |
-h, --nested-height | Height the game renders at. With -h alone, a 16:9 width is assumed | Same as -H | -h 1080 |
-m, --max-scale | Maximum scale factor applied by the auto scaler | Decimal, no limit | -m 2 |
Refresh rate, frame limiting, and VRR
| Flag | What it does | Default / values | Example |
|---|---|---|---|
-r, --nested-refresh | Game refresh rate in frames per second. The README describes it as a frame-rate limit for the game | Unlimited; integer, 0 or higher | -r 60 |
-o, --nested-unfocused-refresh | The same limit while the Gamescope window is unfocused. Nested mode only | Unlimited | -o 30 |
--framerate-limit | A simple limiter used as a divisor of the refresh rate, rounding down: at 60 Hz, 59 gives 60 fps and 25 gives 30 fps | 0 (disabled) | --framerate-limit 30 |
--adaptive-sync | Enable adaptive sync (variable refresh rate) if available | Off | --adaptive-sync |
Window modes
These are listed under "Nested mode options" in the help text. They affect the window Gamescope opens on your desktop and mean nothing in an embedded session.
| Flag | What it does | Default / values | Example |
|---|---|---|---|
-f, --fullscreen | Make the window fullscreen. Super + F toggles it at runtime | Off | -f |
-b, --borderless | Make the window borderless | Off | -b |
--display-index | Force Gamescope to use a specific display in nested mode | 0 | --display-index 1 |
--force-windows-fullscreen | Force windows inside Gamescope to the size of the nested display. This resizes the game's window, not Gamescope's | Off | --force-windows-fullscreen |
Scaling and filters
The scaler decides the geometry: how the game's image is fitted to the output. The filter decides how pixels are sampled when the sizes differ. They are independent, so -S integer -F nearest is a valid pair.
| Flag | What it does | Default / values | Example |
|---|---|---|---|
-S, --scaler | Upscaler type. fit keeps the aspect ratio inside the output, fill keeps it and covers the output (cropping), stretch ignores it, integer rounds the scale down to a whole multiple, auto behaves like fit capped by --max-scale | auto; auto, integer, fit, fill, stretch | -S integer |
-F, --filter | Upscaler filter. fsr is AMD FidelityFX Super Resolution 1.0, nis is NVIDIA Image Scaling v1.0.3, sgsr is Snapdragon Game Super Resolution 1 with RCAS | linear; linear, nearest, fsr, nis, pixel, and sgsr on current master | -F fsr |
--sharpness, --fsr-sharpness | Upscaler sharpness. One option with two names | 2; 0 (maximum) to 20 (minimum) | --sharpness 5 |
--reshade-effect, --reshade-technique-idx | Apply a ReShade shader from ~/.local/share/gamescope/reshade/Shaders or /usr/share/gamescope/reshade/Shaders, and pick a technique by index. The README warns that effects add latency | None | --reshade-effect crt.fx |
Runtime shortcuts from the help text: Super + U toggles FSR, Super + Y toggles NIS, Super + N toggles nearest-neighbour filtering, Super + I and Super + O change sharpness.
HDR and color
| Flag | What it does | Default / values | Example |
|---|---|---|---|
--hdr-enabled | Enable HDR output. Clients need the Gamescope WSI layer. Without this flag, an HDR client is tonemapped to SDR | Off | --hdr-enabled |
--hdr-sdr-content-nits | Luminance of SDR content shown on an HDR output | 400 nits | --hdr-sdr-content-nits 300 |
--hdr-itm-enabled | SDR to HDR inverse tone mapping. Only works for SDR input | Off | --hdr-itm-enabled |
--hdr-itm-sdr-nits | SDR luminance used as the input of inverse tone mapping | 100 nits, max 1000 | --hdr-itm-sdr-nits 200 |
--hdr-itm-target-nits | Target luminance of inverse tone mapping | 1000 nits, max 10000 | --hdr-itm-target-nits 800 |
--sdr-gamut-wideness | How wide a gamut SDR content is mapped to | 0 to 1 | --sdr-gamut-wideness 0.5 |
--hdr-debug-force-support | Report HDR support even if the display lacks it. HDR clients are still output as SDR | Off | debug only |
--hdr-debug-force-output | Force HDR10 PQ output even if the display lacks it, which the help text says "will look very wrong" | Off | debug only |
--hdr-debug-heatmap | Heatmap of scene luminance in nits | Off | debug only |
--disable-color-management | Disable color management | Off | debug only |
Cursor and input
| Flag | What it does | Default / values | Example |
|---|---|---|---|
--force-grab-cursor | Always use relative mouse mode instead of switching on cursor visibility. Nested mode only | Off | --force-grab-cursor |
-g, --grab | Grab the keyboard. Super + G toggles it. Nested mode only | Off | -g |
-s, --mouse-sensitivity | Multiply mouse movement by a decimal number | 1.0 | -s 0.8 |
--cursor | Path to the default cursor image | None | --cursor /path/cursor.png |
--cursor-hotspot | Hotspot of that image as x,y. In the option table but not in the help text | None | --cursor-hotspot 4,4 |
--cursor-scale-height | Base output height to scale the cursor against, linearly | Unset | --cursor-scale-height 1080 |
-C, --hide-cursor-delay | Hide the cursor image after this delay. The source reads it as milliseconds | 10000 | -C 3000 |
Wayland, Xwayland, and backends
| Flag | What it does | Default / values | Example |
|---|---|---|---|
--expose-wayland | Support Wayland clients using xdg-shell, instead of only X11 clients through Xwayland | Off | --expose-wayland |
--xwayland-count | Create N Xwayland servers | 1; at least 1 | --xwayland-count 2 |
--backend | Rendering backend. drm is a standalone display session, sdl and wayland are nested windows, headless has no window and no DRM output, openvr outputs a VR overlay. drm, sdl, and openvr exist only if compiled in | auto | --backend sdl |
--prefer-vk-device | Prefer a Vulkan device for compositing, as vendor:device hex IDs | None | --prefer-vk-device 1002:7300 |
With auto, the source picks wayland when a Wayland display is present, sdl when only DISPLAY is set, and drm otherwise.
Steam and MangoHud integration
| Flag | What it does | Default / values | Example |
|---|---|---|---|
-e, --steam | Enable Steam integration. Meant for sessions where Steam itself runs inside Gamescope | Off | gamescope -e -- steam -gamepadui |
--mangoapp | Launch with the mangoapp overlay. The help text says to use this instead of wrapping the game or Gamescope in mangohud | Off | --mangoapp |
--keep-alive | Keep Gamescope alive after the primary process has died | Off | --keep-alive |
Flags that only work in embedded (DRM) sessions
An embedded session is Gamescope driving the display itself through DRM, as on the Steam Deck. The help text lists these under "Embedded mode options". They do not apply to a nested window on your desktop, which is why -O does not fix "wrong monitor" in a Steam launch option; --display-index is the nested counterpart.
| Flag | What it does | Default / values | Example |
|---|---|---|---|
-O, --prefer-output | Connectors in order of preference | Comma-separated list | -O DP-1,HDMI-A-1 |
--default-touch-mode | How touch input is turned into clicks | 0 hover, 1 left, 2 right, 3 middle, 4 passthrough | --default-touch-mode 4 |
--generate-drm-mode | DRM mode generation algorithm | cvt; cvt or fixed | --generate-drm-mode fixed |
--immediate-flips | Enable immediate flips. May tear | Off | --immediate-flips |
--disable-layers and --debug-layers (libliftoff hardware planes) sit with the embedded options in the source, --mura-map is listed under "Steam Deck options", and --force-orientation (left, right, normal, upsidedown) rotates the internal display. The reverse also holds: -W and -H are ignored in embedded mode, and -o, -b, -f, -g, --force-grab-cursor, and --display-index are nested-only.
Debugging and diagnostics
| Flag | What it does | Default / values | Example |
|---|---|---|---|
-T, --stats-path | Write statistics to a path | None | -T /tmp/gamescope-stats |
--debug-hud, -v | Paint a HUD with debug info | Off | --debug-hud |
--composite-debug | Draw frame markers on alternating corners when compositing | Off | --composite-debug |
--force-composition, -c | Disable direct scan-out | Off | --force-composition |
--rt | Use realtime scheduling. Applied only when Gamescope has CAP_SYS_NICE | Off | --rt |
--debug-focus, --debug-events, --synchronous-x11 | Debug XWM focus, debug X11 events, force X11 connection synchronization | Off | --debug-focus |
The option table also holds -x/--disable-xres, -R/--ready-fd, --virtual-connector-strategy, --allow-deferred-backend, --fade-out-duration, --xwayland-force-touch-pointer-emulation, --force-composition-rotation, and a --vr-* family for OpenVR builds. They are session plumbing; gamescope --help describes those that have help text.
Deprecated, renamed, and mistaken flags
--hdr-itm-enablewas the name in the option table through the 3.15 releases; 3.16 renamed it to--hdr-itm-enabled. Current builds still accept the old spelling, because the parser takes unambiguous prefixes of long options, but the new spelling fails on 3.15 and older.--integer-scale(-i),--nearest-neighbor-filter(-n),--fsr-upscaling(-U), and--nis-upscaling(-Y) were real flags in the 3.11 series. Release 3.12.0 replaced them with-Sand-F, and current builds reject them withunrecognized option. Write-S integer,-F nearest,-F fsr, and-F nis.--fsr-sharpnessis not deprecated. It and--sharpnessset the same value, which applies to NIS as well as FSR.
Five short recipes
The long-form versions, with the HDR environment variables and the Heroic and Lutris fields, are in Steam launch options for Gamescope.
# 1080p render, FSR upscale to a 1440p fullscreen window
gamescope -W 2560 -H 1440 -w 1920 -h 1080 -F fsr --sharpness 5 -f -- %command%
# Cap at 60, drop to 30 when unfocused
gamescope -W 2560 -H 1440 -r 60 -o 30 -f -- %command%
# Pixel art: 720p game, integer scaled to 1440p
gamescope -h 720 -H 1440 -S integer -F nearest -- %command%
# HDR output with VRR
gamescope -W 3840 -H 2160 --hdr-enabled --adaptive-sync -f -- %command%
# Overlay at output resolution, cursor kept inside the window
gamescope -W 2560 -H 1440 -f --mangoapp --force-grab-cursor -- %command%Where ProtonShift's Gamescope builder fits
ProtonShift's builder is a form over a subset of this page. Per its source, it emits -W/-H for output size, -w/-h for game size, -r for the FPS limit, -F fsr with --fsr-sharpness clamped to 0 through 20, --hdr-enabled, -f, and -b, then always appends --. A free-text field takes any other flag; it is split with shell quoting rules and passed through without validation. The builder can also emit a ScopeBuddy prefix (SCB_AUTO_RES=1 scb --) instead of a raw command.
One known defect: the builder's integer-scaling switch currently writes --integer-scale, which Gamescope rejects. Until that is fixed, leave the switch off and type -S integer into the extra-arguments field. Getting Started covers installation.
Next steps
Frequently asked questions
- What is the difference between -W/-H and -w/-h?
- -W and -H set the output: the size of the Gamescope window or fullscreen surface, 1280x720 by default and ignored in embedded mode. -w and -h set the resolution the game sees and renders at, and default to the output size. When the two differ, Gamescope scales the game's image to the output with the -S scaler and the -F filter.
- Which gamescope flag enables FSR?
- -F fsr, or --filter fsr in long form. It has a visible effect only when the game resolution (-w/-h) is smaller than the output (-W/-H). --sharpness, also spelled --fsr-sharpness, tunes it from 0 (sharpest) to 20 (softest) and does not turn FSR on by itself. The older -U flag was removed in 3.12.0.
- How do I cap FPS with gamescope?
- Use -r, for example gamescope -r 60 -- %command%. The README describes -r as a frame-rate limit for the game, unlimited by default, and its own example applies it to a vsynced game. -o sets a separate limit while the window is unfocused. --framerate-limit is a second, simpler limiter that works as a divisor of the refresh rate, so at 60 Hz a value of 25 gives 30 fps.
- Does gamescope work on NVIDIA?
- The Gamescope README says it runs on Mesa with AMD or Intel, and that NVIDIA's proprietary driver needs version 515.43.04 or newer with the nvidia-drm.modeset=1 kernel parameter set. That is a minimum requirement, not a statement that every option behaves the same on NVIDIA; the README does not say which do. If a flag such as --hdr-enabled or --adaptive-sync misbehaves, remove it, test again, and check the Gamescope issue tracker for your driver version.