A Linux utility that creates easy-to-find symbolic links to Proton/Wine prefixes for installed Steam games.
- Overview
- Features
- Requirements
- Installation
- Uninstallation
- How It Works
- Usage
- File Structure
- Technical Details
- Troubleshooting
- License
SteamPrefixShortcut is a Linux utility that creates easy-to-find symbolic links to Proton/Wine prefixes for installed Steam games. The tool automatically searches for Steam installations in your home directory, identifies installed games, and creates symbolic links named after each game in a dedicated directory (~/SteamPrefixes).
This utility is particularly useful for Linux gamers who need to access or modify their game prefixes, as it provides a centralized, clearly labeled location for all game prefixes rather than navigating through Steam's nested directory structure.
- Automatic Steam Installation Detection: Finds Steam installations in the user's home directory
- Multiple Steam Library Support: Can handle multiple Steam library locations
- Intelligent Prefix Management: Creates symbolic links named after games for easy identification
- Automatic Cleanup: Removes links to uninstalled games
- Startup Integration: Can run automatically at system login
- Flexible Installation Options: Supports both local (user-specific) and global (system-wide) installation
- Python 3
- GCC or another C compiler (only needed for installation scripts)
- Linux operating system
- Steam installed with Proton-compatible games
Make all scripts executable:
chmod +x *.shThis method installs the tool for the current user only and doesn't require sudo privileges:
./install-local.shThe local installation:
- Compiles the Python script to a binary using Nuitka
- Installs the binary to
~/.local/bin/steam-prefix - Adds a startup entry to your
~/.profileto run on login - Cleans up temporary build files
This method installs the tool for all users and requires sudo privileges:
./install-global.shThe global installation:
- Compiles the Python script to a binary using Nuitka
- Installs the binary to
/bin/steam-prefix - Creates a startup script in
/etc/profile.d/to run on system login - Cleans up temporary build files
If you installed using the local method:
./uninstall-local.shThis will:
- Remove the binary from
~/.local/bin/steam-prefix - Remove the startup entry from
~/.profile
If you installed using the global method:
./uninstall-global.shThis will:
- Remove the binary from
/bin/steam-prefix - Remove the startup script from
/etc/profile.d/steam-prefix.sh
SteamPrefixShortcut performs the following operations:
- Directory Setup: Creates a
~/SteamPrefixesdirectory if it doesn't exist - Cleanup: Removes symlinks to prefixes of uninstalled games
- Steam Detection: Searches for Steam installations in the user's home directory
- Library Selection: If multiple Steam libraries are found, asks the user which to use (or all)
- Game Identification: Reads Steam's application manifest files to get game names and IDs
- Symlink Creation: Creates symbolic links from
~/SteamPrefixes/[Game Name]to the actual prefix location
If installed:
steam-prefixIf not installed:
python3 main.pyThe tool will run automatically at login if installed using either installation method.
After running the tool, you can access any game's prefix by navigating to:
cd ~/SteamPrefixes/[Game Name]For example:
cd ~/SteamPrefixes/Half-Life\ 2- main.py: Main Python script that implements the tool's functionality
- install-local.sh: Script for local (user-specific) installation
- install-global.sh: Script for global (system-wide) installation
- uninstall-local.sh: Script to remove local installation
- uninstall-global.sh: Script to remove global installation
- compile.sh: Helper script to compile the Python script to a binary using Nuitka
- cleanup.sh: Helper script to remove temporary build files
- LICENSE: MIT license file
- README.md: Brief project overview and installation instructions
Steam stores Proton/Wine prefixes in the compatdata directory within each Steam library. Each prefix is in a subdirectory named with the game's AppID. This tool creates symbolic links from ~/SteamPrefixes/[Game Name] to the actual prefix location at [Steam Library]/steamapps/compatdata/[AppID].
The tool uses two methods to find Steam libraries:
- First, it checks for the standard
.steam/rootdirectory in the user's home - If that's not found, it walks through the home directory looking for paths ending in
steamapps/common
For both methods, it reads the libraryfolders.vdf file to discover all configured Steam library locations.
The tool reads appmanifest_*.acf files in each Steam library's steamapps directory to extract game names and AppIDs.
The installation scripts use Nuitka to compile the Python script to a binary. This:
- Creates a standalone executable without Python dependencies
- Improves startup performance
- Allows for easier distribution
- Ensure Steam is properly installed and you have at least one game with a Proton/Wine prefix
- Check if the
~/SteamPrefixesdirectory exists and you have write permissions - Run the tool manually to see any error messages
- Make sure all Steam libraries are properly configured in Steam
- The tool only detects libraries in your home directory by default
- Try running the tool manually to select specific libraries
- Check if the binary exists at the expected location (
~/.local/bin/steam-prefixor/bin/steam-prefix) - Verify that the startup entry was added correctly to
~/.profileor/etc/profile.d/ - Try running the tool manually to check for errors
SteamPrefixShortcut is licensed under the MIT License. See the LICENSE file for details.
Copyright (c) 2024 Aaron J Gerbert