How do I run Proton without steam?
How to Run Proton Without Steam: A Comprehensive Guide by revWhiteShadow
At revWhiteShadow, we understand the desire for a streamlined and integrated experience when using Proton, the revolutionary compatibility layer that brings Windows applications to Linux. Many users, like yourself, envision a seamless workflow where launching your favorite Windows executables on Linux is as simple as a right-click and a “Run with Proton” option, with all associated data neatly organized in a dedicated directory, mirroring the convenience of native Linux applications. While Proton is intrinsically linked with the Steam ecosystem for its primary use case—running games—it is absolutely achievable to run Proton without Steam and achieve the very workflow you describe. This guide, crafted by the team at revWhiteShadow, will delve into the intricacies of setting up and utilizing Proton as a standalone application launcher, allowing you to manage your Windows applications directly from your Linux desktop.
Understanding Proton and Its Relationship with Steam
Before we embark on the journey of untethering Proton from Steam, it is crucial to understand the foundational relationship between the two. Steam, Valve’s ubiquitous digital distribution platform for PC games, leverages Proton as its proprietary tool for enabling Windows games to run on Linux systems. Proton is essentially a sophisticated wrapper, built upon the robust Wine compatibility layer, enhanced with numerous patches and custom configurations specifically designed to optimize game performance and compatibility. When you install and run a Windows game through Steam, Steam automatically manages the Proton version, its prefixes (the isolated Wine environments where Windows applications are installed), and all necessary configurations.
However, the power and flexibility of Proton extend far beyond the confines of Steam’s game library. The underlying technology is, at its core, Wine. This means that with the right setup and configuration, you can harness the compatibility and performance benefits of Proton for any Windows executable, not just those distributed via Steam. This involves manually creating and managing Proton prefixes, selecting specific Proton versions, and integrating this functionality into your desktop environment for a more intuitive user experience.
Setting Up a Standalone Proton Environment
The core of running Proton without Steam lies in creating and managing your own Proton prefixes, independent of any Steam installation. This gives you granular control over each application’s environment, preventing conflicts and allowing for tailored configurations.
Creating a Dedicated Proton Directory
Your vision of a ~/.proton
directory is an excellent starting point for organizing your standalone Proton installations. This centralized location will house your application prefixes, Proton versions, and any custom configurations.
Manual Directory Creation: You can simply create this directory in your home folder using your file manager or the terminal:
mkdir ~/.proton
Organizing Prefixes: Within
~/.proton
, we will create subdirectories for each application’s prefix. A common and effective naming convention is to use the application’s name or a unique identifier. For instance, if you want to run a hypothetical application named “MyAwesomeApp.exe”:mkdir ~/.proton/MyAwesomeApp
This directory,
~/.proton/MyAwesomeApp
, will serve as the C: drive for “MyAwesomeApp.”
Downloading and Installing Proton Versions
To run applications without Steam, you need to have access to Proton’s binaries. While Steam automatically downloads and manages these, for standalone use, you have a few excellent options:
Option 1: Utilizing ProtonUp-Qt
ProtonUp-Qt is a fantastic, user-friendly graphical tool designed to download and manage various Proton versions, including official Steam-based Proton releases and community-maintained forks like Proton-GE (GloriousEggroll). This tool is highly recommended for its ease of use and comprehensive features.
Installation: ProtonUp-Qt is typically available through your distribution’s package manager or as a Flatpak. For Flatpak, you can install it with:
flatpak install flathub io.github.gortex.protonup
Consult your distribution’s documentation for the most appropriate installation method.
Downloading Proton:
- Launch ProtonUp-Qt.
- Navigate to the “Proton” tab.
- Click the “Add” button.
- Select the Proton version you wish to download (e.g., the latest official Proton version or a specific Proton-GE version).
- Choose a custom installation path. Crucially, point this path to a new subdirectory within your
~/.proton
folder. For example, if you want to store Proton 8.0-3, you might create~/.proton/Proton-8.0-3
and select that as the installation directory. This keeps your downloaded Proton executables organized and separate from your application prefixes.
Option 2: Manual Download and Extraction
For users who prefer a more hands-on approach or if ProtonUp-Qt is not readily available, you can manually download Proton releases.
Locate Proton Releases: Proton releases are often available on platforms like GitHub. You’ll typically find them as
.tar.gz
archives. Searching for “Proton GE GitHub” or “Steam Runtime Proton releases” can help you find these.Extracting Proton: Once downloaded, create a dedicated folder for your Proton binaries within
~/.proton
, for example,~/.proton/bins
. Then, extract the downloaded archive into this folder.mkdir ~/.proton/bins tar -xzf /path/to/downloaded/proton.tar.gz -C ~/.proton/bins/
Ensure you extract each Proton version into its own subdirectory within
~/.proton/bins
(e.g.,~/.proton/bins/Proton-8.0-3/
).
Initializing a Proton Prefix
A Proton prefix is essentially an isolated Wine environment that contains the necessary Windows system files, registry entries, and installed applications for a particular Windows program. Each application should ideally reside in its own prefix to avoid conflicts.
You can initialize a prefix using the wine
command, which is part of the Proton installation. The key is to point the WINEPREFIX
environment variable to your desired prefix directory.
Using a Downloaded Proton Version: If you downloaded a specific Proton version (e.g.,
~/.proton/bins/Proton-8.0-3/
), you’ll use itswine
executable.WINEPREFIX="$HOME/.proton/MyAwesomeApp" "$HOME/.proton/bins/Proton-8.0-3/bin/wine64" wineboot -u
WINEPREFIX="$HOME/.proton/MyAwesomeApp"
: This sets the environment variable to point to your application’s prefix directory."$HOME/.proton/bins/Proton-8.0-3/bin/wine64"
: This specifies the exact Wine executable from your chosen Proton version. We usewine64
for 64-bit applications, which are most common. If you need to run a 32-bit application, you would usewine
.wineboot -u
: This command initializes the Wine prefix, installing necessary components like Mono and Gecko (for .NET and IE components).
Using ProtonUp-Qt Managed Versions: If you used ProtonUp-Qt to manage your Proton downloads and specified custom paths within
~/.proton
, you’ll need to locate thebin/wine64
orbin/wine
executable within the directory you chose for that specific Proton version.For example, if ProtonUp-Qt installed Proton 8.0-3 in
~/.proton/Proton-8.0-3
, the command would look like:WINEPREFIX="$HOME/.proton/MyAwesomeApp" "$HOME/.proton/Proton-8.0-3/bin/wine64" wineboot -u
This initialization process creates the necessary directory structure and core system files within your ~/.proton/MyAwesomeApp
prefix.
Installing Windows Applications into Your Proton Prefix
With your prefix initialized, you can now install your Windows applications. The process is akin to installing them within a native Windows environment, but executed through Wine.
The Installation Command
Locate the Installer: First, ensure you have the
.exe
installer file for your application. Let’s assume it’s located at/path/to/MyAwesomeAppInstaller.exe
.Run the Installer: Execute the installer using the same Proton Wine binary and
WINEPREFIX
as before.WINEPREFIX="$HOME/.proton/MyAwesomeApp" "$HOME/.proton/bins/Proton-8.0-3/bin/wine64" /path/to/MyAwesomeAppInstaller.exe
This command will launch the Windows installer. Follow the on-screen prompts as you would on a Windows system. Crucially, during the installation process, ensure that you select a custom installation path that resides within your
~/.proton/MyAwesomeApp
prefix. For instance, install the application toC:\MyAwesomeApp
within the prefix, which translates to$HOME/.proton/MyAwesomeApp/drive_c/MyAwesomeApp
on your Linux filesystem. This keeps all application data neatly within your managed prefix.
Installing Dependencies
Some applications may require specific Windows components or runtimes that are not included in the base Wine or Proton installation. These often include:
- DirectX: Essential for most games and graphics-intensive applications.
- .NET Framework: Required by many applications and games.
- Visual C++ Redistributables: Commonly needed libraries for many programs.
You can install these within your prefix using a similar command structure:
# Example: Installing DirectX 9.0c
WINEPREFIX="$HOME/.proton/MyAwesomeApp" "$HOME/.proton/bins/Proton-8.0-3/bin/wine64" /path/to/dxwebsetup.exe
# Example: Installing Visual C++ 2015 Redistributable
WINEPREFIX="$HOME/.proton/MyAwesomeApp" "$HOME/.proton/bins/Proton-8.0-3/bin/wine64" /path/to/vc_redist.x64.exe
You can download these installers from Microsoft’s official website.
Creating the “Run using Proton” Option
Your desire for a “run using Proton” option in your file manager’s context menu is a key aspect of achieving a truly integrated experience. This can be accomplished through custom desktop environment entries or by creating shell scripts.
Method 1: Shell Scripts and Symbolic Links
This is a straightforward method that involves creating executable scripts for each application.
Create an Application Script: For each application installed in its own prefix, create a small shell script. For “MyAwesomeApp,” you might create a script named
run-myawesomeapp.sh
in a convenient location, perhaps~/.local/bin/
(ensure this directory is in your system’s PATH).#!/bin/bash # Define the Proton version and prefix PROTON_BIN="$HOME/.proton/bins/Proton-8.0-3/bin/wine64" WINEPREFIX="$HOME/.proton/MyAwesomeApp" APP_EXECUTABLE="MyAwesomeApp.exe" # The actual executable within the prefix # Navigate to the application's directory within the prefix (optional but good practice) # cd "$WINEPREFIX/drive_c/MyAwesomeApp" # Run the application "$PROTON_BIN" start "$WINEPREFIX" "$APP_EXECUTABLE"
Note: The
start
command is a Wine command that can help launch executables and manage their windowing. You might need to adjust$APP_EXECUTABLE
to the correct path relative to the prefix’sdrive_c
. For example, it might beMyAwesomeApp/MyAwesomeApp.exe
.Make the Script Executable:
chmod +x ~/.local/bin/run-myawesomeapp.sh
Launch: You can now run your application by typing
run-myawesomeapp.sh
in your terminal or by creating a desktop shortcut.
Method 2: Desktop Entry Files (.desktop)
For a more graphical integration, you can create .desktop
files that your desktop environment will recognize and display in application menus and context menus.
Create a
.desktop
File: Create a file namedmyawesomeapp.desktop
in~/.local/share/applications/
.[Desktop Entry] Name=MyAwesomeApp (Proton) Exec=/home/yourusername/.local/bin/run-myawesomeapp.sh %U Icon=/path/to/an/icon.png # Optional: Path to an icon for your application Type=Application Categories=Game;Application; Comment=Run MyAwesomeApp using standalone Proton Terminal=false
Name
: The name that will appear in menus.Exec
: The command to execute. This should point to yourrun-myawesomeapp.sh
script.Icon
: A path to an.png
or.svg
icon file for the application.Terminal
: Set tofalse
if the application doesn’t require a terminal window.
Integrate with File Manager (Advanced): To get a “Run with Proton” option directly in your file manager’s context menu when you right-click an
.exe
file, you’ll need to create custom actions for your file manager. This process varies depending on your desktop environment (GNOME, KDE, XFCE, etc.).- KDE Plasma: You can use “Custom Actions” within Dolphin’s configuration. You’d create an action that triggers a script when an
.exe
file is selected. - GNOME (Nautilus): This often requires installing extensions or using
gvfs-run
with specific commands. A common approach involves creating a~/local/share/nautilus/scripts
directory and placing executable scripts there, which then appear in the “Scripts” submenu.
A generalized script for context menu integration might look like this (to be placed in your file manager’s scripts directory):
#!/bin/bash # Check if the selected file is an .exe if [[ "$1" =~ \.exe$ ]]; then # Prompt the user to select a Proton version and the prefix directory (if not already defined) # For simplicity here, we assume a default Proton version and prefix structure. # A more robust solution would use zenity/kdialog for user input. # Example: hardcoded for demonstration SELECTED_PROTON_VERSION="Proton-8.0-3" APP_NAME=$(basename "$1" .exe) # Extract app name from filename APP_PREFIX="$HOME/.proton/$APP_NAME" # Initialize prefix if it doesn't exist if [ ! -d "$APP_PREFIX" ]; then echo "Creating prefix for $APP_NAME at $APP_PREFIX..." WINEPREFIX="$APP_PREFIX" "$HOME/.proton/bins/$SELECTED_PROTON_VERSION/bin/wine64" wineboot -u fi # Run the installer or the application itself WINEPREFIX="$APP_PREFIX" "$HOME/.proton/bins/$SELECTED_PROTON_VERSION/bin/wine64" "$1" else echo "Please select an .exe file." fi
This script would need to be made executable and placed in the appropriate scripts directory for your file manager.
- KDE Plasma: You can use “Custom Actions” within Dolphin’s configuration. You’d create an action that triggers a script when an
Managing Multiple Proton Versions and Application Prefixes
As you expand your collection of Windows applications, managing multiple Proton versions and their associated prefixes becomes essential.
Using Different Proton Versions for Specific Applications
Not all applications perform optimally with the same Proton version. You might find that an older game runs better with Proton 4.11-13, while a newer application requires the latest Proton-GE.
- Organization: Keep your downloaded Proton binaries well-organized within
~/.proton/bins/
. Name the subdirectories clearly, e.g.,Proton-8.0-3
,Proton-GE-Custom-7.45
. - Scripting: When creating your application launch scripts or
.desktop
files, ensure thePROTON_BIN
variable correctly points to thewine64
executable of the desired Proton version for that specific application.
Best Practices for Prefix Management
- One Prefix Per Application: This is the golden rule. Never install multiple applications into the same prefix unless they are explicitly designed to be installed together (e.g., a game and its DLCs).
- Backup Prefixes: Regularly back up your application prefixes (
~/.proton/MyAwesomeApp
, etc.). These contain all installed applications and their data. - Clean Up Unused Prefixes: If you uninstall an application, remember to delete its corresponding prefix directory to free up disk space.
Troubleshooting Common Issues
Running applications outside of Steam’s curated environment can sometimes lead to unexpected issues.
Application Crashes or Won’t Start
- Proton Version: Try a different Proton version. Newer isn’t always better; some older applications might be hardcoded to work with older Wine/Proton versions.
- Dependencies: Ensure all necessary runtime libraries (DirectX, .NET, Visual C++) are installed correctly within the prefix.
- Prefix Corruption: In rare cases, a prefix can become corrupted. Try deleting the prefix directory and reinstalling the application from scratch.
- Logging: Run the application from a terminal to capture any error messages. You can increase Wine’s logging verbosity by setting the
WINEDEBUG
environment variable (e.g.,WINEDEBUG=+all
).
Graphics or Performance Issues
- Graphics Drivers: Ensure your Linux graphics drivers are up-to-date and correctly installed.
- Proton Version: As mentioned, different Proton versions have varying performance optimizations and patches. Experimentation is key.
- DXVK/VKD3D: Proton uses DXVK (for DirectX 9, 10, and 11) and VKD3D-Proton (for DirectX 12) to translate graphics calls to Vulkan. Ensure these components are working correctly. ProtonUp-Qt often includes builds of DXVK and VKD3D that are known to work well.
- Environment Variables: Some applications might benefit from specific environment variables set before launching (e.g.,
DXVK_ASYNC=1
for smoother frame pacing in some games).
Advanced Customization and Integration
Using winecfg
and regedit
Just like on Windows, you can access Wine’s configuration tools:
winecfg
: To configure Wine’s settings (graphics, audio, drive mappings, etc.) for a specific prefix:WINEPREFIX="$HOME/.proton/MyAwesomeApp" "$HOME/.proton/bins/Proton-8.0-3/bin/wine64" winecfg
regedit
: To access and edit the Wine registry:WINEPREFIX="$HOME/.proton/MyAwesomeApp" "$HOME/.proton/bins/Proton-8.0-3/bin/wine64" regedit
Symlinking Data and Configurations
To keep your ~/.proton
directory clean and avoid duplicating large amounts of data, you can use symbolic links (symlinks). For example, if an application stores its save files or configuration in Documents
within its prefix, you could symlink that to a more accessible location.
# Example: Symlink application save files to a dedicated folder in ~/.config
ln -s "$HOME/.proton/MyAwesomeApp/drive_c/Users/YourUser/Documents/MyAwesomeApp/Saves" "$HOME/.config/MyAwesomeApp/Saves"
Caution: Be careful when symlinking, especially for installation directories, as it can sometimes interfere with how the application expects its files to be structured.
Conclusion: The Power of a Custom Proton Workflow
By following this comprehensive guide from revWhiteShadow, you can effectively run Proton without Steam, creating a personalized and streamlined environment for your Windows applications on Linux. The ability to manage your own Proton prefixes, integrate launching options directly into your desktop, and maintain a clean, organized directory structure empowers you to harness the full potential of this incredible compatibility layer. While it requires a bit more initial setup than using Steam, the flexibility and control gained are invaluable for any Linux user looking to bridge the gap between Windows and their preferred operating system. Embrace this custom workflow, and enjoy a seamless experience running your essential Windows executables directly from your Linux desktop, all managed from your dedicated ~/.proton
directory.