| OS | Version | Build Status | Decky Latest |
|---|---|---|---|
| Ubuntu | |||
| Debian | |||
| Arch Linux | |||
| Fedora | |||
| Termux | N/A | ||
| Windows | N/A |
Windows CI currently validates that the repo toolchain can install and build on a GitHub-hosted Windows runner. It is not a claim that the Decky plugin runtime or hardware-detection backend is fully supported on Windows.
Decky Latest builds against the current published versions of @decky/ui, @decky/api, and @decky/rollup on every commit and on a daily schedule to catch upstream breaks early. Termux and Windows show N/A because they are not Decky Loader targets.
A Decky Loader plugin for Steam Deck that pulls ProtonDB reports for the game in front of you, scores them against your hardware, and lets you apply useful launch options without typing them by hand.
Website: https://www.proton-pulse.com/ - the companion web app now lives on its own domain. If you had the old
mdeguzis.github.io/proton-pulse-web/*URLs bookmarked, please update them. The plugin itself already points at the new host.
Browse community reports, Pulse configs, and per-game compatibility data on the Proton Pulse site - works on mobile with a collapsible left-side nav.
Coverage policy: overall Python and TypeScript coverage must stay at or above 90%, and pull requests must keep changed-line coverage at 95% or higher.
- Steam Deck with Decky Loader installed
- Node.js 24 and pnpm v9+ (for building from source)
- Python 3.x with uv
Use this route if you just want a published build and do not need the source tree.
- Download the latest plugin ZIP from the Releases page.
- Open Decky Loader on your Steam Deck.
- Use Decky Loader's manual ZIP install flow and select the downloaded release archive.
- Restart Decky Loader or Steam if the plugin does not appear immediately.
Use this route if you want to build locally, tweak the plugin, or deploy straight to your Steam Deck.
git clone https://github.com/mdeguzis/decky-proton-pulse.git
cd decky-proton-pulse
make setup
make build
DECK_IP=192.168.1.x make deployUseful variants:
make watch
DECK_IP=192.168.1.x make deploy-reloadSee the Developer Guide for the full setup and deployment workflow.
git clone https://github.com/mdeguzis/decky-proton-pulse.git
cd decky-proton-pulse
bash scripts/dev-setup.shVersioning uses a single source of truth:
VERSION
Normal build and deploy commands sync that value into package.json and pyproject.toml automatically.
Proton Pulse has a built-in updater on the About tab (the last tab in the plugin sidebar).
- Open the plugin and navigate to the About tab.
- Press Check for Updates -- the plugin queries the GitHub Releases API and shows the latest version.
- If an update is available, press Update to vX.Y.Z -- the ZIP downloads in the background, identical to the Proton-GE installer in the Compatibility Tools tab.
- When the download and extraction finish, press Reload Plugin -- the plugin attempts a hot-reload via Decky Loader first (no Steam restart needed); if that is unavailable it falls back to a full Steam restart.
Note: Because Proton Pulse is not in the Decky store, it cannot use the store's automatic update path. The built-in updater provides an equivalent experience from within the plugin itself.
Proton Pulse is built for Decky Loader. Other plugin loaders for the Steam Deck ecosystem are listed below.
| Loader | Platform | Status | Notes |
|---|---|---|---|
| Decky Loader | SteamOS / Linux | Yes | Primary target |
| Decky Loader for Windows | Windows | Yes (AFAIK) | Community port; not officially tested |
| Condenser | TBD | WIP | Plugin API not yet finalized |
| Millennium | SteamOS / Windows | No | Different plugin model; not compatible |
- ProtonDB report fetching - pulls from cached, mirrored, and live ProtonDB sources so the plugin still has something useful to show when one source comes up empty
- Native Pulse reports - submit your own compatibility report directly from the plugin; hardware (CPU, GPU, RAM, VRAM, driver, kernel, OS, resolution) is captured automatically so you only need to pick a rating and Proton version
- Dynamic ProtonDB hardware scoring & filtering - ranks reports by GPU vendor, driver version, Proton build, report age, and compatibility tier so results match your exact setup, not just the general tier
- Steam Proton launch option management (no copy/paste) - apply, review, edit, and clear launch options directly from the Steam Deck UI without a keyboard
- Saved configurations - keep reusable per-game setups with custom variables and a live launch preview
- Compatibility tool management - browse, install, refresh, and manage Proton and GE versions without leaving the plugin
- Detailed report browsing - open full report cards with filters, diagnostics, vote counts, and score breakdowns
- ProtonDB contribution helpers - vote on reports and prep system info for ProtonDB submissions from inside the plugin
- Game library badge - floating tier badge (PLATINUM/GOLD/etc.) injected into the game page header; for non-Steam games with a resolved Steam store match, shows the tier badge alongside the launcher source label (Heroic, Epic, GOG, etc.)
- Store page badge - Proton Pulse icon badge injected into the Steam store page header when browsing a game's store page in the embedded browser
- Search results hint - Y-button gamepad hint appears at the bottom of the screen when a search result tile is focused, letting you jump straight to Proton Pulse for that game without opening the library first
- Non-Steam game support - resolves non-Steam shortcuts (Heroic, Lutris, Bottles, itch.io, etc.) to their matching Steam store app ID for accurate ProtonDB data and report lookup
- Library guard - report action buttons (apply, edit, upload, clear, vote) are disabled for games not in the user's library, with a visible "Not in library" notice at the top of the manage-game tab
- System detection - detects CPU, RAM, GPU, driver, kernel, distro, and custom Proton versions automatically
- Sidebar tools - quick access to settings, logs, cache tools, and plugin controls from the Decky panel
- Translations - interface support for 19 languages, with coverage tracked in generated build metrics
- Diagnostics and logging - built-in logs, cache inspection, performance metrics, and backend troubleshooting support
Getting Proton launch options right usually means opening ProtonDB, reading a pile of reports, guessing which ones match your hardware, and then copying flags into Steam by hand. Proton Pulse handles that from the Steam Deck UI:
- Open the plugin from the Quick Access sidebar, navigate to a game in your library, or browse Steam search results -- a Y-button hint lets you jump straight to a game's Proton data without leaving search.
- The plugin fetches ProtonDB reports and scores them against your GPU, driver, and Proton version.
- Pick a report and press Apply. Proton Pulse writes the launch options straight to that game through Steam's CEF API.
Tier badges appear directly on game library pages and Steam store pages so you know compatibility at a glance. Non-Steam games (Heroic, Lutris, Epic, GOG, etc.) are resolved to their Steam store counterpart for accurate report data.
Linking the Decky plugin to a Proton Pulse account is optional. The plugin works without it for local report browsing, scoring, and launch-option management.
- On the website: Steam login is only the sign-in method for your Proton Pulse account.
- In the Decky plugin: linking uses a Proton Pulse install ID plus a short link code.
- Privacy boundary: the plugin does not upload Steam profile names or Steam usernames, and Steam auth is not used as the plugin identity.
After linking, uploads from that Decky install can show up as yours on the website, and the website can manage synced systems and reports for the same Proton Pulse user.
Several Decky plugins cover subsets of what Proton Pulse does. The table below covers the most relevant ones.
| Feature | Proton Pulse | ProtonDB Badges | Proton Launch |
|---|---|---|---|
| ProtonDB tier badge on game page | Yes -- Full/Compact/Minimal/Off styles, atom icon, Native Linux badge, non-Steam launcher badge | Yes -- multiple sizes and positions | No |
| Tier badges on library grid tiles | Yes -- Full/Compact/Minimal/Off styles, persistent cache | Yes -- small atom icons (green/red/gray) | No |
| Launch option apply (no copy/paste) | Yes -- ProtonDB-sourced, writes directly to Steam | Clipboard copy only | Yes -- preset-based (FSR, DLSS, DXVK, etc.), writes directly to Steam |
| Hardware-aware report scoring | Yes -- GPU, driver, Proton version, age, tier | No | No |
| Report submission from plugin | Yes -- full native Pulse report | Opens ProtonDB website (not native) | No |
| Companion website | Yes -- proton-pulse.com | Yes -- protondb.schelstraete.org | No |
| Cloud sync (configs + reports) | Yes -- Supabase | No -- local cache only | No |
| Saved per-game configurations | Yes | No | Yes -- per-game profiles |
| Compatibility tool management | Yes -- install/manage Proton/GE | No | No |
| Non-Steam game support (Heroic, GOG, etc.) | Yes -- resolves to Steam store ID | No | No |
| Self-updater (built-in) | Yes -- GitHub Releases | No | No |
| Decky store availability | No | Yes | Yes |
| Translation support | 19 languages (build-tracked) | 32 languages | -- |
| Active maintenance | Yes | Yes | Yes |
Additional forks of these plugins exist outside the Decky store and may offer further variations. The table reflects the primary/canonical repo for each project.
For a deeper comparison of Proton Pulse vs ProtonDB (including the website, report ownership, open data, and hardware scoring), see the FAQ.
- Proton Pulse Site - browse community reports, Pulse configs, and per-game data
- FAQ - common questions: how Proton Pulse compares to ProtonDB, report ownership, hardware scoring, privacy
- Developer Guide - setup, build, deploy, testing, CEF debugging
- Architecture - file-by-file code breakdown and ownership boundaries
- System Design - end-to-end flow diagrams, data ownership, scoring model
- Scoring Algorithm - how reports are weighted and ranked
- API Reference - Python callables and TypeScript interfaces
- ProtonDB Data Resolution - app ID resolution, mirror misses, and live fallback
- Local dev notes - Node 24, CI, remote Deck helpers, and CEF captures
Generated from metrics/translation-coverage.json during pnpm run build.
Proton Pulse supports 29 languages. Translation coverage is measured during build and can be enforced with pnpm run check-translations (100% minimum).
| Language | Code | Coverage | Status |
|---|---|---|---|
| English | en | 100.0% (canonical) | canonical |
| Deutsch | de | 99.0% | fail |
| Español | es | 99.0% | fail |
| Français | fr | 99.0% | fail |
| Italiano | it | 98.9% | fail |
| 日本語 | ja | 99.0% | fail |
| 한국어 | ko | 99.0% | fail |
| Nederlands | nl | 98.9% | fail |
| Polski | pl | 98.9% | fail |
| Português (BR) | pt-BR | 99.0% | fail |
| Русский | ru | 99.0% | fail |
| Türkçe | tr | 99.0% | fail |
| Українська | uk | 98.9% | fail |
| Svenska | sv | 98.9% | fail |
| Čeština | cs | 98.9% | fail |
| ภาษาไทย | th | 98.9% | fail |
| Tiếng Việt | vi | 98.9% | fail |
| 简体中文 | zh-CN | 99.0% | fail |
| 繁體中文 | zh-TW | 98.9% | fail |
| Български | bg | 98.9% | fail |
| Dansk | da | 98.9% | fail |
| Ελληνικά | el | 98.9% | fail |
| Español (Latinoamérica) | es-419 | 98.9% | fail |
| Suomi | fi | 98.9% | fail |
| Magyar | hu | 98.9% | fail |
| Norsk | no | 98.9% | fail |
| Português (PT) | pt | 98.9% | fail |
| Română | ro | 98.9% | fail |
| Slovenščina | sl | 98.9% | fail |
Want to help translate? See src/lib/translations/ for the translation files.
If you need to inspect Deck UI patches, injected buttons, or console errors live on the Deck, you can enable Steam's CEF remote debugger and connect from your desktop browser.
- Enable the remote debugger on the Deck:
DECK_IP=192.168.1.x make cef-debug-enable- Open the debugger endpoint from your desktop browser:
http://192.168.1.x:8081
- If your browser does not auto-discover the targets, open:
http://192.168.1.x:8081/json
That page lists the active Steam CEF targets and their DevTools URLs.
Tips:
- Keep
make get-logshandy in another terminal so you can compare frontend console behavior with the plugin log. - If you are debugging a game page patch, open the game page first, then refresh the target list so the correct CEF view is visible.
- Use the inspector console to confirm route changes, DOM anchor selection, and injected button state when UI patches do not show up where expected.
This project is licensed under the GNU General Public License v3.0 or later. Upstream license copies are in the LICENSES/ directory.
Proton Pulse would not exist without the open-source projects below. Many pieces of this project were inspired by their work.
| Project | Author | License |
|---|---|---|
| ProtonDB Badges (protondb-decky) | OMGDuke | GPL-3.0 |
| Decky Proton Launch | moi952 | BSD-3-Clause |
| Wine Cellar (decky-wine-cellar) | FlashyReese | MIT |
| SteamGridDB Decky Plugin (decky-steamgriddb) | SteamGridDB | GPL-3.0-or-later |
| Decky Plugin Template | SteamDeckHomebrew | BSD-3-Clause |
If you find Proton Pulse useful, please consider starring or contributing to these upstream projects as well.
