Sharp Filter Selector is a Decky Loader plugin for Gamescope that lets you switch the active upscaling filter between AMD FidelityFX Super Resolution (FSR) and NVIDIA Image Scaling (NIS) directly from the Quick Access Menu.
It is designed for Steam Deck / SteamOS and compatible Linux gaming sessions using Decky Loader + Gamescope, and provides a simple 0–5 NIS sharpness control without editing per-game launch options.
If you are looking for a Decky NIS plugin, a way to switch FSR vs NIS in Gamescope, or a Steam Deck scaling filter selector, this plugin is built for that workflow.
- Switch Gamescope scaling between FSR and NIS from Decky Loader.
- Adjust NIS sharpness from 0 (minimum) to 5 (maximum).
- Apply the selected filter to active Gamescope/Xwayland sessions, including SteamOS multi-Xwayland setups.
- Remember the selected filter and sharpness level.
- No per-game launch-option editing required.
- Does not replace, patch or install Gamescope.
- Decky Loader.
- A Linux gaming session running Gamescope.
xpropavailable on the system.- A game/render resolution where Gamescope is actually performing scaling.
If the game is already rendering at the final display resolution, changing the scaling filter may produce little or no visible difference. Sharp Filter Selector chooses the scaling filter; it does not force a lower render resolution.
- Open the repository's Releases section.
- Download the latest
sharp-filter-selector-vX.Y.Z.zip. - Install it through Decky Loader's developer/plugin installation flow, or extract the
sharp-filter-selectorfolder into the Decky plugins directory. - Reload Decky Loader or restart Gaming Mode/Steam.
Typical Decky plugin directory:
~/homebrew/plugins/sharp-filter-selector/
git clone https://github.com/N3ruk/Sharp-Filter-Selector.git
cd Sharp-Filter-Selector
./install.shTo uninstall:
./uninstall.shFor custom test locations:
DECKY_PLUGIN_DIR=/path/to/sharp-filter-selector ./install.sh- Start a game in a Gamescope gaming session.
- Open the Quick Access Menu.
- Open Decky Loader → Sharp Filter Selector.
- Enable Use NIS to switch from FSR to NVIDIA Image Scaling.
- Set NIS sharpness from
0to5. - Disable Use NIS to return to FSR.
The status line shows the selected filter and the Gamescope display targets that were updated.
Sharp Filter Selector does not implement its own scaler. It controls the scaling-filter state exposed by Gamescope.
- FSR = AMD FidelityFX Super Resolution spatial upscaling.
- NIS = NVIDIA Image Scaling spatial upscaling.
- The sharpness slider controls the sharpening value used by Gamescope.
- Steam/Gamescope's own scaling controls can update the same state.
This makes the plugin useful for quickly comparing Gamescope FSR and NIS without maintaining separate launch-option strings for each game.
The backend uses separate compatibility paths so SteamOS-specific handling does not alter the validated generic-Linux/Ubuntu behavior.
- SteamOS: discovers Gamescope Xwayland targets, applies the Gamescope scaling selectors across them and performs an explicit LINEAR → NIS transition before selecting NIS.
- Ubuntu / generic Linux: keeps the validated compatibility path based on
GAMESCOPE_SHARP_FILTER. - Sharpness: the plugin keeps its own 0–5 NIS control and maps it to Gamescope's full sharpening range.
The frontend uses Decky's supported public packages (@decky/api, @decky/ui and @decky/rollup).
The plugin does not inject a graphics library, modify game files or replace Gamescope, so removing it does not require restoring a modified Gamescope installation.
The plugin is intended for:
- Decky Loader environments.
- Steam Deck / SteamOS gaming sessions.
- Linux gaming systems running Gamescope and compatible Xwayland sessions.
Version 0.3.4 has been validated by the maintainer on both Ubuntu + Gamescope and SteamOS / Steam Deck. Actual support on other systems depends on the Gamescope session exposing the expected scaling properties and on xprop being available.
The plugin says that no Gamescope session was found.
Make sure the plugin is being used from a Gamescope gaming session and that an active Gamescope/Xwayland display exists.
The filter changes but the image looks the same.
Gamescope must be scaling the game for FSR/NIS to have a visible effect. Try rendering the game below the final output resolution.
The plugin reports that xprop is missing.
Install the package that provides xprop for your distribution, then reload Decky Loader.
The filter changed after using Steam's own scaling controls.
Steam/Gamescope can write the same scaling state. Open Sharp Filter Selector and apply the filter again.
The frontend source lives in src/index.tsx and is built with TypeScript + Rollup using Decky's supported packages.
npm install
npm run buildThe compiled Decky frontend is written to dist/index.js.
Create a release-ready ZIP with:
npm run packageOutput:
release/sharp-filter-selector-vX.Y.Z.zip
.
├── dist/index.js # Compiled Decky frontend loaded at runtime
├── src/index.tsx # TypeScript/React frontend source
├── main.py # Python backend
├── plugin.json # Decky metadata
├── package.json # Version, Decky dependencies and build scripts
├── rollup.config.js # Decky Rollup configuration
├── tsconfig.json # TypeScript configuration
├── install.sh # Local/source installation helper
├── uninstall.sh # Local uninstall helper
├── scripts/package.sh # Release ZIP builder
└── LICENSE
Sharp Filter Selector is a Decky Loader Gamescope plugin for switching FSR and NIS on Steam Deck and Linux. It provides a Quick Access Menu toggle for AMD FSR / NVIDIA Image Scaling plus NIS sharpness control.
When publishing a new version:
- Update
versioninpackage.json. - Add the changes to
CHANGELOG.md. - Run
npm run build. - Run
npm run package. - Create a Git tag such as
v0.3.0and attach the generated ZIP to the GitHub Release.
BSD 3-Clause. See LICENSE.
Built for Decky Loader and Gamescope.
FSR is an AMD technology. NIS is an NVIDIA technology. This project is an independent community plugin and is not affiliated with or endorsed by Valve, AMD or NVIDIA.
This project was developed with substantial generative-AI assistance. A majority of the current codebase was written with AI assistance and then iteratively tested and refined on real systems by the maintainer. See AI_DISCLOSURE.md for the full provenance statement.