Run any Windows program through Valve's Proton

Run any Windows program through Usage


Run any Windows program through Valve's Proton.



Problem Reporting:

Please create an issue on the Github page which lists: system, kernel version, game, shell, and if it is or isn't a Steam game – provide how you had installed it and where it is installed. Additionally provide screenshots of the shell. Try many methods to get it to work and describe what you did in your issue.

Warning: if you are not using a release, use a release.


Defaults to the latest version of Proton.

Defaults to the latest version of Proton, all extra arguments passed to the executable.

--goes --to program are passed to the proton / the program

Uses specified version of Proton, any extra arguments will be passed to the executable.

Uses custom version of Proton, give the past to directory, not the Proton executable itself.


Configuration files are extremely simple: ~/.config/proton.conf Set your own path to data (any empty directory), steam, (the directory steam is installed in), and optionally common (steam's common directory).


Proton Caller 3.1.0 added support for Steam's runtimes and their options. Selecting a runtime can be done by using -R Soldier/Sniper/Default/BattleEye

On Proton versions 5 and newer, runtime Soldier is selected automatically

The runtime options can be selected using multiple -o

available options:

More about these options can be found in Proton's manual.


Arch Linux:

proton-caller is available as a package in the AUR.

Debian-based Distributions:

Based on Debian 12+ or Ubuntu 22.04+:

sudo apt install proton-caller

Based on Ubuntu 20.04-21.10:


A .deb file is available for download at the releases page.

RPM-based Distributions:

A .rpm file is available for download at the releases page. There is also a Copr repository available for Fedora 34+ users:

Other Linux:

An x86_64 Linux binary is available for download at the releases page.

Compile from source:

Space Engine example:

Make a .desktop launcher. example file


logo by Maro_Does_Art on twitter


Collection of the latest Issues



Comment Icon2

Right, I have a recently-installed copy of EndeavourOS, which I chose to use over my copy of Manjaro MATE which had worked before. I also tried with a copy of Manjaro KDE, where I still encounter the same errors. So walk me through what I am missing here;

I run an executable I know had worked in the past, since it's an installer for a game I was playing before I elected to distro-hop. I request for proton-call to run the application without defining the Proton version to use since I have 7.0 installed. I get this:

I define to use Proton Experimental because that's what had worked before. This is what I get:

What?! That's got to be a Python thing right? I don't even know how to adequately describe this issue. But I feel like I am missing something. Though, I somehow resolved the missing Soldier issue I was having before… I think? If I get that again after following some kind suggestions from this thread, I'll ask about that. But so far this software isn't working in spite of my best efforts on a relatively-fresh Arch-based system instance.



Comment Icon1

Describe the bug The following error message is printed:

To Reproduce Steps to reproduce the behavior:

  1. Try something like proton-call -p 7.0 -r foo.exe -nointro

Expected behavior -nointro should be passed to foo.exe.

Desktop (please complete the following information):

  • proton-call 3.1.0
  • proton 7.0

Find the latest versions by id

3.1.0 - Apr 03, 2022

This update adds support for Steam Runtime and their options. New information about using these additions are in the README!

Thank you to everybody who created issues. I hope these new runtime options will fix most of them, as PC is now running programs more similarly to how Steam itself does.

3.0.1 - Dec 19, 2021

Version bump to upload program to

3.0.0r - Dec 19, 2021

I don't have much to say. This was a rewrite for organization, configs are the same.

-i, --index to view an index of proton versions.

3.0.0p2 - Nov 11, 2021

fixes issue #42

3.0.0p1 - Nov 10, 2021

  • common directory bugs should be fixed as the directory handling isn't as stupid nor based on strings.
  • PC now creates a compat data environment for every Proton version within the config's data directory
  • Indexes installed versions of protons
  • -i and --index will index and view your proton versions

2.3.2 - Sep 02, 2021

This should fix issue #30

2.3.1 - Jul 20, 2021

Patch to fix issues with Proton 6.x ( #23 ). Thanks you for people who talked to me about it.

This update does come with a minor config change to fix this issue, the new steam variable in the config, and common being optional now.

2.3.0 - May 30, 2021


  • Command line arguments have changed, -r is required to run a program.
  • Entire rewrite
  • Is now available as a crate with a working API
  • even more minimal code

View the README for changes to command line arguments. Thank you!!

2.2.3 - Mar 14, 2021

  • fix error on missing common
  • clean up

2.2.2 - Feb 25, 2021

Thank you: @orestisfl, @cpba, @jJit0, @Nateaaaaaaaaaaaaaaaaaaaa, @thibaultmol, @Diegovsky, & @Sojiro84 for your contributions and issues!

Also thank you to @benthetechguy for promoting proton-caller on r/linux and Linux Unplugged, and for providing debian packaging!


  1. Searches for config in XDG_CONFIG_HOME, defaults to ~/.config/
  2. Better logic for finding Proton in your common directory. 2.1 Easier to choose versions and use custom versions. 2.2 Kind of guesses which version to use and use latest if it can't guess.
  3. Fix many typos.
  4. Defaults to the current latest version of Proton when one is not listed:

proton-call foo.exe

2.2.1 - Feb 24, 2021

Minor changes to code and fix typos thanks to @cpba

2.2.0 - Feb 24, 2021


2.1.0-1 - Feb 22, 2021

Better cleaner code and better handling of arguments for Proton and the Windows executable

2.0.1 - Feb 17, 2021

This is a small fix to change error handling outside of custom mode and a small typo in the help message

2.0 - Feb 13, 2021

This release took since November to be made, sorry for the long wait, but this update is big and important.

  1. It was rewritten in Rust!
  2. All features in 1.0 still exist and work as expected (except you can't just type 5)
  3. You can now give the windows executable arguments from Proton Caller by adding them after it: foo.exe --help & fooe.exe "--all --stuffs"

Build using cargo: cargo b --release Install from the AUR yay -S proton-caller

2.0-rc2 - Feb 12, 2021

2.0-rc1 - Feb 11, 2021

2.0-PRE - Feb 10, 2021

I'm rewritting it in rust,

-c works as expected --help works as expected --version works as expected

1.3.2 - Nov 06, 2020

I now make people stop smashin———but seariously, why are your usernames so long?

1.3.1 - Nov 05, 2020

1.3.0 - Nov 03, 2020

This was pretty much a rewrite with added under-the-hood features and improvements. Plus, custom mode now checks if your version exists.

1.2.1 - Oct 27, 2020

Custom mode will now work as: -c "/home/avery/.steam/steam/steamapps/common/Proton 5.13/" -c '/home/avery/.steam/steam/steamapps/common/Proton 5.13/' -c /home/avery/.steam/steam/steamapps/common/Proton\ 5.13/


1.2.0 - Oct 24, 2020

You must now add a new variable to your environment for the program to know where to find you Proton installs. `export PC_COMMON='$HOME/.steam/steam/steamapps/common/' or where ever you have your Proton versions installed to.

The next addition is the execl() call replacing the system() which creates no overhead other than what Proton itself has—good if you're low on memory. This also operates slightly faster.

For more information see the README.

1.1.2 - Oct 17, 2020

Read the README, packages will be added shortly after release.

1.0.3 - Oct 14, 2020

1.0.3, view readme

1.0.1 - Oct 14, 2020

Fixed an issue with using "5" instead of "5.0"; Did a small bit of cleaning.

1.0.0 - Oct 14, 2020

Run make & make install. It is also currently being added to the AUR.

1.0.0a4 - Oct 14, 2020

1.0.0a3 - Oct 14, 2020

1.0.0a - Oct 14, 2020

I have not many words but makepkg

Information - Updated May 15, 2022

Stars: 346
Forks: 12
Issues: 3

Arsenal 2D retro Rust Game engine

Katharos Technology is focused on producing our first game prototype, bevy game engine and our own Katharos...

Arsenal 2D retro Rust Game engine

Grumpy Visitors 2D Rust game for code reference and learning

Grumpy Visitors is a top-down 2D action arcade game

Grumpy Visitors 2D Rust game for code reference and learning

Rust Game Remake

Remake in rust of a game I made during the here

Rust Game Remake

A 3d rust game using OpenGl and Emscripten to build for the wasm32-unknown-emscripten

It can also run standalone, developed and tested on Linux but will

A 3d rust game using OpenGl and Emscripten to build for the wasm32-unknown-emscripten

Rust Game of Life

This is a simulator of Conway's Game of Life in Rust, using SDL2 to render the game graphically

Rust Game of Life

INOX - Rust Game engine integrated in Blender

It's a Game Engine written in Rust with some bindings for external libs and with Blender as editor

INOX - Rust Game engine integrated in Blender

Rust GameBoy Advanced Emulator

Building this project on linux requires cmake and gtk3

Rust GameBoy Advanced Emulator

A Rust Game Engine

In an effort to learn the Rust language (because I am a nut), I am building a game engine

A Rust Game Engine

A Rust GameBoy emulator!

TetrisZelda: Link's Awakening

A Rust GameBoy emulator!

Another Rust game engine

It's started as a rust version of the tutorial from

Another Rust game engine
Facebook Instagram Twitter GitHub Dribbble