protontool 0.1.0

A tool for configuring Wine/Proton prefixes to be used with Proton/Steam
Documentation
  • Coverage
  • 4.03%
    10 out of 248 items documented0 out of 133 items with examples
  • Size
  • Source code size: 164.38 kB This is the summed size of all the files inside the crates.io package for this release.
  • Documentation size: 10.76 MB This is the summed size of all files generated by rustdoc for all configured targets
  • Ø build duration
  • this release: 15s Average build duration of successful builds.
  • all releases: 18s Average build duration of successful builds in releases after 2024-10-23.
  • Links
  • nullorigin/protontool
    0 0 0
  • crates.io
  • Dependencies
  • Versions
  • Owners
  • nullorigin

protontool

A tool for managing Wine/Proton prefixes with built-in component installation (DLLs, fonts, settings) for Steam games and custom prefixes.

Building

cargo build --release

The binaries will be placed in target/release/:

  • protontool - Main CLI tool
  • protontool-launch - Launch Windows executables
  • protontool-desktop-install - Install desktop shortcuts

Usage

Install components for a game

protontool APPID <verb> [verb...]

Search for games

protontool -s GAME_NAME

List all installed games

protontool -l

Launch GUI

protontool --gui

Run a custom command

protontool -c "wine myapp.exe" APPID

Launch a Windows executable

protontool-launch /path/to/app.exe
protontool-launch --appid APPID /path/to/app.exe

Compile-time Configuration

Custom paths can be set at compile time using feature flags and environment variables:

# Custom Steam directory
protontool_DEFAULT_STEAM_DIR=/custom/steam \
  cargo build --features custom_steam_dir

# Custom GUI provider (yad or zenity)
protontool_DEFAULT_GUI_PROVIDER=yad \
  cargo build --features custom_gui_provider

# Custom Steam Runtime path
protontool_STEAM_RUNTIME_PATH=/custom/runtime \
  cargo build --features custom_steam_runtime

Environment Variables

Variable Description
STEAM_DIR Path to custom Steam installation
PROTON_VERSION Name of preferred Proton installation
WINE Path to custom wine executable
WINESERVER Path to custom wineserver executable
STEAM_RUNTIME 0 = disable, 1 = enable, or path to custom runtime
protontool_GUI GUI provider (yad or zenity)

Variables set by protontool

Variable Description
STEAM_APPID App ID of the current game
STEAM_APP_PATH Path to the game's installation directory
PROTON_PATH Path to the Proton installation

Project Structure

src/
├── main.rs              # protontool entry point
├── lib.rs               # library root
├── bin/
│   ├── launch.rs        # protontool-launch
│   └── desktop_install.rs
├── cli/
│   ├── mod.rs           # CLI logic and mode handlers
│   └── util.rs          # Argument parsing, logging
├── config.rs            # Configuration and defaults
├── gui.rs               # Zenity/YAD dialog wrappers
├── steam.rs             # Steam installation detection
├── util.rs              # Utilities (run_command, which, etc.)
├── winetricks/          # Built-in verb installation system
└── vdf/
    ├── mod.rs
    ├── parser.rs        # Valve Data Format parser
    └── vdict.rs         # VDF dictionary structure

Requirements

  • Rust 1.70+ (for building)
  • Steam
  • Proton
  • zenity or yad (for GUI dialogs)

License

MIT