CLI tool
Matoking/protontricks avatar
Matoking/protontricks

Protontricks: running winetricks verbs against a Proton prefix

A wrapper that does winetricks things for Proton enabled games, requires Winetricks.

2,313 stars52 forksPythonGPL-3.0

At a glance

What is it?
A wrapper that points winetricks at the Wine prefix Steam already built for a game, so you can install runtimes and launch Windows programs inside a Proton environment.
Who is it for?
Protontricks solves one narrow problem cleanly: winetricks assumes a Wine prefix you manage, and Steam creates prefixes it manages itself, so the tool needs to be told which game to act on before it acts. Once you have that App ID, the rest is ordinary winetricks.
Can I use it commercially?
Yes, with conditions. GPL-3.0 is a copyleft licence: if you distribute software that includes it, you must release that software's source code under the same licence. Running it internally without distributing it does not trigger that obligation.
Is it still maintained?
Yes. The repository last received commits 11 days ago.
What is it written in?
Mainly Python, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 28, 2026, and from our analysis. They are not legal advice.

Editorial analysis

A wrapper that inherits winetricks' entire command surface

Protontricks is a wrapper script, and the README is upfront that it adds very little on its own. Its job is to locate the Wine prefix that Steam created for a specific game, point winetricks at it, and hand over the arguments. The stated use is running winetricks verbs for a Steam Play or Proton game, plus other common Wine tasks such as launching an external Windows executable.

The repository description makes the dependency explicit: a wrapper that does winetricks things for Proton-enabled games, and requires Winetricks. The README says the same, and adds that because it is a wrapper, any command that works for Winetricks will likely work for Protontricks too.

The project is a fork of an original by sirmentio, which remains available as Sirmentio/protontricks. That lineage matters for anyone who arrived here from a search result: older guides reference the original repository, and the environment variables and command shapes have been kept compatible enough that most of that advice still applies.

Requirements are listed as Python 3.7 or newer, Winetricks, Steam, and YAD or Zenity for the graphical interface. The GUI dependency is the only one that catches people out: installing from a community package without the dialog toolkit installed produces a working command line and a launcher that does nothing.

The README opens with a caution that is worth repeating because it is unusual to see one. It states that a site at a protontricks dot com domain is fake and is not affiliated with any of the developers, and that this repository is the only official page. For a project whose name is easy to guess and whose audience searches for tools by name, that warning is doing real work.

Finding the App ID is the step everyone gets wrong

The command line takes an App ID, and most of the friction in using this tool is locating it. The README gives two ways. Search by game name, or list everything Steam knows about:

bash
# Find your game's App ID by searching for it
protontricks -s <GAME NAME>

# or by listing all games
protontricks -l

With the ID in hand, the rest is winetricks. Any parameters after the App ID are passed straight through:

bash
# Run winetricks for the game.
# Any parameters in <ACTIONS> are passed directly to Winetricks.
# Parameters specific to Protontricks need to be placed *before* <APPID>.
protontricks <APPID> <ACTIONS>

# Run a custom command for selected game
protontricks -c <COMMAND> <APPID>

That ordering rule is the single most useful line in the README. Protontricks' own flags come before the App ID, and winetricks verbs come after it, which means anything you have written for winetricks works once you put the ID in the right place. The same logic explains why a custom command takes the App ID last, after the command itself.

Two environment variables adjust where things are found. `$STEAM_DIR` points at a Steam installation in a non-standard location, and `$WINETRICKS` points at a local winetricks install if you do not want the system one. A third, `$PROTON_VERSION`, pins a specific Proton build, and the README explains the naming convention with a worked example: if Steam displays Proton 5.0-3, the value is Proton 5.0, without the revision suffix.

Prefix location is handled through `$STEAM_COMPAT_DATA_PATH`, which Protontricks supports and which sets the Wine prefix as `$STEAM_COMPAT_DATA_PATH/pfx`. The README notes that Proton itself supports this variable, so it can be set per game in Steam launch options as `STEAM_COMPAT_DATA_PATH=<path> %command%`. That is how you keep a game's prefix out of the default location, and it works whether Steam or Protontricks sets the variable.

The launcher covers the case winetricks does not handle

Winetricks installs things into a prefix. It does not launch arbitrary Windows executables in one, which is a different operation and a common need when a game wants a redistributable or a launcher that lives outside the game directory. Protontricks ships a second command for that.

bash
# Launch a Windows program (executable or command) using Protontricks
protontricks-launch <PROGRAM>

# Launch a Windows program for a specific Steam app using Protontricks
protontricks-launch --appid <APPID> <PROGRAM>

Without an App ID it targets the default prefix, and with one it targets that game's. That covers both the general case of running a Windows tool under Proton and the specific case of a tool that belongs to a particular game.

The graphical interface is invoked separately, and it accepts pass-through arguments after a double dash:

bash
# Run the Protontricks GUI
protontricks --gui

# Pass arguments to Winetricks when using the Protontricks GUI.
# Everything after "--" is passed directly to Winetricks.
protontricks --gui -- <WINETRICKS_ARGUMENTS>

Desktop integration is part of the package rather than something you configure. Protontricks installs an application shortcut and registers itself as a handler so that choosing Protontricks Launcher in a file manager's open-with menu runs a Windows executable through the right prefix. The README names the helper that enables this, `protontricks-desktop-install`, for the case where the shortcut does not appear automatically.

There is a small contradiction between that instruction and the packaging, and it is worth flagging because it explains a confusing install. The Makefile's install target explicitly removes `protontricks-desktop-install` after installing, with a comment saying the desktop files are already installed properly. So on a package-manager install the helper is deliberately absent and the shortcut should already work, while the README still tells you to run it if the shortcut is missing. Both statements are true of different installations. If the shortcut is missing after a community package install, the manual helper is likely what got removed, and the Flatpak configuration is where to look instead.

Four install paths, two of them explicitly recommended

The README covers community packages, Flatpak, pipx and pip, and its recommendation depends on the machine. Community packages come first and are called the recommended option if available for your distribution, because they handle dependencies and desktop features out of the box. The caveat is timing: the README warns that community-maintained packages might be out of date compared with PyPI releases, and that distributions such as Debian and Ubuntu often carry outdated versions of either Protontricks or Winetricks. The advice in that case is to install the Flatpak instead, because an outdated release may simply fail.

Flatpak is the recommendation for a Steam Deck, installed through the Discover store in desktop mode, and the recommendation when the Flatpak version of Steam is what you use. Using it from the command line means adding aliases, because the sandbox means the binary is not on your path:

bash
echo "alias protontricks='flatpak run com.github.Matoking.protontricks'" >> ~/.bashrc
echo "alias protontricks-launch='flatpak run --command=protontricks-launch com.github.Matoking.protontricks'" >> ~/.bashrc

Restarting the terminal is required for those to take effect. The README then explains the sandbox consequence honestly: the Flatpak can only see the Steam installation directory by default, so additional Steam library locations and external Windows applications need filesystem permissions granted manually.

pipx installs the latest PyPI release or the git repository for the current user without touching the system Python. Plain pip works but is marked not recommended, on the grounds of possible problems.

The packaging metadata explains some of the runtime shape. pyproject.toml uses setuptools-scm and writes the version into `src/protontricks/_version.py`, which means the version comes from the git history rather than a hardcoded string. The same file excludes a `_vdf` directory from coverage, so the Valve Data Format parsing code is deliberately not measured. Runtime dependencies are small: `vdf==3.4` and Pillow, the latter for the graphical interface.

Project state, and what the numbers say about it

The repository has 2,313 stars, 52 forks and 91 open issues. That last number is worth pausing on, because it is high relative to the project size and it is the kind of thing that tells you about a maintainer's workload rather than about code quality. This is a tool that files pile up in, and a title like the one about a Steam Deck fix can sit open for a long time.

The last push was 2026-09-26, so the project is being worked on. GitHub reports the repository as not archived, and it is licensed GPL-3.0, which is a reasonable choice for a tool that patches other people's environments.

The GitHub releases list is empty, and that is a genuine difference from most projects of this size rather than a gap in the data. Versioning happens through setuptools-scm reading git history, so there are tags but no published release notes on GitHub. A changelog exists in the tree, and the troubleshooting document the README points to exists as well, which is where to look for what changed and for why something is not working.

For a project like this the practical test is whether the troubleshooting document covers your case. If you are installing from a community package on a distribution the README names as prone to staleness, the version skew is the first thing to check, and the Flatpak is the documented escape from it.

What this tool is actually good at

The clearest way to describe Protontricks is as an argument-shuffler with a directory lookup attached. winetricks needs a Wine prefix in an environment variable and a verb. Proton has a prefix in a Steam-managed location and a game identity in an App ID. The tool bridges those, and once it has, the full winetricks vocabulary is available.

That framing also explains the boundary. Anything winetricks cannot do, Protontricks cannot do, because it forwards to winetricks. The launcher is the one genuine addition, covering the launch-an-executable case that winetricks does not address.

The design decisions that make it pleasant are small and worth naming. Arguments before the App ID versus after it is a clean rule. The App ID can be searched for rather than looked up on a wiki. Environment variables cover the non-standard locations that a Proton setup actually has. And the README states the relationship to winetricks plainly instead of pretending to be a replacement.

What it does not do is manage Proton versions for you. `$PROTON_VERSION` is available, but pinning is a manual decision, and the README gives you the naming convention rather than a list of valid values. On a machine with several Proton builds installed, that is a detail to look up once.

If you have arrived from a search for winetricks alternatives or Proton troubleshooting, the answer is that this is the maintained continuation of the original tool, that its command surface is winetricks plus a launcher, and that the App ID is the only genuinely new concept you need.

Editorial conclusion

Protontricks solves one narrow problem cleanly: winetricks assumes a Wine prefix you manage, and Steam creates prefixes it manages itself, so the tool needs to be told which game to act on before it acts. Once you have that App ID, the rest is ordinary winetricks. The README is unusually honest about its own limits, telling you that community packages on Debian and Ubuntu are often outdated for Protontricks or Winetricks and that the Flatpak is the better answer in that case, which is more useful than most installation guides manage. Start with the Flatpak on a Steam Deck, use the community package where one is current, and check the linked troubleshooting document before assuming a verb failed.

Frequently asked questions

Is Protontricks the same as Winetricks?

Not quite. Protontricks is a wrapper that locates the Wine prefix Steam built for a game and passes your arguments through to Winetricks, which does the actual work. Because it is a wrapper, commands that work for Winetricks generally work for Protontricks too, and the launcher for Windows executables is the one addition.

What are protontricks for?

Running winetricks commands against a Steam Play or Proton game. It is useful when a title needs a closed-source runtime library or an application that Proton does not include, and it can also launch external Windows executables inside a game's prefix.

Is ProtonTricks safe to use?

It is a wrapper around Winetricks that acts on your own Steam prefixes, and it is distributed through community packages, Flathub and PyPI. The README does warn that a site at a protontricks dot com address is fake and not affiliated with the developers, so install from the repository, Flathub or your distribution's packages.

Why isn't ProtonTricks working?

The most common cause given in the README is version staleness rather than a bug: community packages on distributions such as Debian and Ubuntu are often outdated for either Protontricks or Winetricks, and the advice is to install the Flatpak instead. A Flatpak install also needs filesystem permissions for extra Steam libraries, and the GUI additionally needs YAD or Zenity present.

Official sources

  1. Issues
  2. License: GPL-3.0
  3. Matoking/protontricks on GitHub
  4. README
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/matoking-protontricks.svg)](https://hysenlabs.com/projects/matoking-protontricks)