Linux Game Helper (linuxgh) is a lightweight utility for running Windows trainers and other .exe tools inside the same Proton/Wine prefix as your Steam or Lutris games.
-
Install:
chmod +x install.sh ./install.sh
-
Configure Steam game:
- Right-click game → Properties → Launch Options:
linuxgh init %command%
-
Launch your game, then run:
linuxgh
Or search for "Linux Game Helper" in your applications menu.
-
Configure Lutris game:
- Right-click the game > Configure > System Options > Click on "Advanced" Toggle > Game Execution
- Set the Command prefix as (
linuxgh init) - (Optional but Recommended) Add environment variable
SteamAppIdwith the gameID. Use steamdb.info to find game. If you don't all games will appear as lutris so automatic trainer selection will fail.
- ✅ Works with Steam Proton, Lutris Proton, and Lutris Wine
- ✅ Simple Steam integration via launch options
- ✅ Per-game trainer management – save and auto-launch trainers
- ✅ Run any executable in the game's Wine/Proton prefix
- ✅ Lightweight – no external dependencies beyond Python 3 and zenity
- ✅ GUI dialogs via zenity (with terminal fallback)
- ✅ Application menu integration with desktop icon
- ✅ No root required for normal usage
linuxgh hooks into your game launch process to capture the Proton/Wine environment (executable path, prefix location, environment variables). When you run the GUI launcher, it detects the running game and lets you:
- Launch a saved trainer for that game
- Browse and run any
.exein the same prefix (Cheat Engine, debuggers, etc.)
All trainer paths are saved per-game in ~/.config/linuxgh/trainer_config.ini for quick access next time.
- Linux (any distribution)
- Python 3 (usually pre-installed)
- zenity (for GUI dialogs, I believe this comes installed on many systems by default)
- Debian/Ubuntu:
sudo apt install zenity - Fedora:
sudo dnf install zenity - Arch:
sudo pacman -S zenity - If not installed, falls back to terminal prompts
- Debian/Ubuntu:
- Steam and/or Lutris for running games
- Proton/Wine environment
git clone https://github.com/RevenantTempest/linux-game-helper.git
cd linux-game-helper/LinuxGHYour directory should contain:
linuxgh– main Python scriptinstall.sh– installation scriptuninstall.sh– uninstallation scriptlinuxgh.png– application icon
chmod +x install.sh uninstall.sh./install.shThe installer will:
- Install
linuxghto/usr/local/bin/ - Create config directory at
~/.config/linuxgh/ - Install the icon to
/usr/share/pixmaps/ - Create a desktop entry for the application menu
- Update desktop and icon caches
which linuxgh
# Should output: /usr/local/bin/linuxgh
linuxgh ls
# Should output nothing (no games running yet)For each game where you want to use trainers:
- Right-click the game in your Steam library
- Select Properties…
- In the Launch Options field, enter:
linuxgh init %command%
- Click OK or close the properties window
This tells Steam to wrap the game launch with linuxgh, which captures the Proton/Wine context.
- Start your game from Steam or Lutris (with launch options configured)
- Once the game is running, open your application menu
- Search for "Linux Game Helper" or "Game"
- Click the Linux Game Helper icon
- Choose Trainer or OtherExe
- Start your game from Steam
- Open a terminal and run:
linuxgh
- Choose Trainer or OtherExe in the dialog
- Set up a custom keyboard shortcut in your desktop environment
- Command:
linuxgh - Example:
Super+Tto launch trainers
When you run linuxgh, you'll see two options:
- For game trainers you use regularly
- First time: Browse and select your trainer
.exe - Path is saved to
~/.config/linuxgh/trainer_config.ini - Next time: Trainer launches immediately without browsing
- One trainer per game (can be changed by reselecting)
- For one-time executables (Cheat Engine, tools, etc.)
- Browse and select any
.exeeach time - Path is not saved
- Useful for testing or occasional use
~/.config/linuxgh/trainer_config.ini
[Game Trainer Locations]
123456 - = "/path/to/SomeGame/trainer.exe"
654321 - = "/path/to/AnotherGame/trainer.exe"123456is the Steam App ID- You can manually edit this file to change trainer paths
- Paths should be absolute (full path from root)
linuxgh supports both GUI and CLI modes:
linuxgh init %command%Used in Steam launch options. Captures game context and runs the game.
linuxgh lsShows App IDs of games currently running with linuxgh context:
123456
654321
linuxgh run <appid> <command>Example:
linuxgh run 123456 "/path/to/trainer.exe"Runs the specified command in the Proton/Wine prefix of the game with App ID 123456.
linuxghOpens the GUI dialog to select Trainer or OtherExe for the currently running game.
Problem: The GUI says no game is detected.
Solution:
- Make sure you added
linuxgh init %command%to the game's Steam launch options - Restart the game from Steam
- Then run
linuxgh - Do the same steps for lutris without %command% and include the environment variable
Verify:
linuxgh lsShould show the App ID of your running game.
Problem: Selected a trainer but nothing happens.
Solution:
- Check the config file:
~/.config/linuxgh/trainer_config.ini - Make sure the path is correct and the
.exestill exists - Try reselecting the trainer:
- Run
linuxgh - Choose Trainer
- Browse to the correct
.exeagain
- Run
Problem: Dialogs don't appear, or you see terminal prompts instead.
Solution: Install zenity:
-
Debian/Ubuntu:
sudo apt install zenity
-
Fedora:
sudo dnf install zenity
-
Arch:
sudo pacman -S zenity
-
openSUSE:
sudo zypper install zenity
After installing, linuxgh will automatically use GUI dialogs.
Problem: Application menu doesn't show the Linux Game Helper icon.
Solution:
- Make sure
linuxgh.pngwas in the directory when you raninstall.sh - Manually update the desktop database:
update-desktop-database ~/.local/share/applications - Log out and log back in
- Check if the desktop file exists:
cat ~/.local/share/applications/linuxgh.desktop
Problem: You have multiple games running and linuxgh picks the wrong one.
Current behavior: linuxgh automatically selects the first detected game.
Workaround:
- Close other games before launching trainers
- Or use the CLI:
linuxgh ls # See all running game IDs linuxgh run <appid> "/path/to/trainer.exe"
Future enhancement: Multi-game selection dialog (Maybe).
cd /path/to/linux-game-helper
./uninstall.shThe script will:
- Remove
/usr/local/bin/linuxgh - Remove the icon from
/usr/share/pixmaps/ - Remove the desktop entry
- Ask if you want to remove
~/.config/linuxgh/(your trainer configs)
For each game you configured:
- Right-click game → Properties
- Clear the Launch Options field (remove
linuxgh init %command%)
Edit the linuxgh script and change this line:
config_dir = Path.home() / ".config" / "linuxgh"To your preferred location.
linuxgh automatically detects Lutris Wine and Lutris Proton runners.
Setup:
- In Lutris, right-click your game → Configure
- Go to System options tab
- In Command prefix, add:
linuxgh init
- In Environment variables, add:
SteamAppID Value
- Save and launch the game
- Run
linuxghas normal
Enable verbose output by running:
linuxgh lsCheck the runtime directory:
ls -la $XDG_RUNTIME_DIR/linuxgh/Each running game should have a directory with:
exe– Proton/Wine executable pathpfx– Wine prefix pathenv– Environment variables
| Item | Location |
|---|---|
| Main script | /usr/local/bin/linuxgh |
| Config file | ~/.config/linuxgh/trainer_config.ini |
| Desktop entry | ~/.local/share/applications/linuxgh.desktop |
| Icon | /usr/share/pixmaps/linuxgh.png |
| Runtime data | $XDG_RUNTIME_DIR/linuxgh/<appid>/ |
Yes, if you run them through Lutris with Wine or Proton.
No, linuxgh is specifically for running Windows executables in Wine/Proton prefixes.
Yes, for Steam games. The game must be launched through Steam with the modified launch options.
Yes, but only one trainer can be saved per game. For additional executables, use the OtherExe option.
linuxgh itself is safe – it's just a Python script that wraps Proton/Wine commands. However, trainers and cheats may:
- Trigger anti-cheat systems (use offline or in single-player only)
- Contain malware (only download trainers from trusted sources)
- Violate game terms of service
Use at your own risk.
Contributions are welcome! Please:
- Fork the repository
- Create a feature branch
- Make your changes
- Test thoroughly
- Submit a pull request
- Inspired by protonhax This is not an endorsement or promotion from them.
- Built for the Linux gaming community