Automate Vortex Mod Manager setup in Linux for Steam & Heroic
VortexTricks is a lightweight, self‑contained Python utility that
- Detects your Steam and Heroic installations
- Resolves duplicate titles between your Steam and GOG libraries
- Creates the necessary WINE prefix(es)
- Registers the games inside Vortex by adding the correct registry keys and
creating save‑game /
AppDatasymlinks - Downloads and installs the latest Vortex release
- Features
- Game Support
- Prerequisites
- Installation
- Usage
- Manual Post‑Execution Steps
- Contributing
- Extending the Game Registry
- Troubleshooting
- Star History
| Feature | Description |
|---|---|
| Store detection | Automatically locates Steam and Heroic (GOG) installations. |
| Duplicate handling | Prompts you to decide which copy to keep or to use separate bottles. |
| Bottle creation | Creates a default Vortex bottle, or separate ones per store, with the appropriate WINE runner. |
| Registry registration | Adds the required Windows registry entries for each game into the Vortex prefix. |
| Symlink creation | Links the Proton prefix’s My Games & AppData folders into the Vortex WINE prefix so that saves and settings stay in sync. |
| Automatic Vortex install | Downloads the latest Vortex installer from GitHub and installs it into the chosen prefix. |
VortexTricks currently supports the games below out of the box, but can be extended to support any game that can be ran under Proton and modded with Vortex. See Extending the Game Registry for information on how to add more games.
- Elder Scrolls III, The: Morrowind
- Elder Scrolls IV, The: Oblivion
- Elder Scrolls V, The: Skyrim
- Elder Scrolls V, The: Skyrim Special Edition
- Fallout 3
- Fallout: New Vegas
- Fallout 4
| Item | Requirement | Notes |
|---|---|---|
| Linux | Any | Tested with Fedora Linux 43 and 44 |
| Python | 3.9+ | Tested with 3.14 |
| Bottles | Required | Required for running Windows binaries |
| Flatpak | Required | Required for Bottles |
| Steam | Optional | Required for Steam games |
| Heroic Games Launcher | Optional | Required for GOG games |
| Proton-GE or Proton-CachyOS | Recommended | Includes protonfixes to enable script extenders |
protontricks |
pip package | Used to find Steam |
requests |
pip package | For downloading the Vortex installer |
jsonschema |
pip package | For validating gameinfo.json |
Any game to be modded needs to be ran once before attempting to mod it. Otherwise, missing files may cause errors in Vortex. If you forget to add one of your games or install a new game later, you can just re-run vortextricks.py after initializing the new game.
# Clone the repo
git clone https://github.com/gsquarediv/vortextricks.git
cd vortextricks
# Create a virtual environment (recommended)
python -m venv venv
source venv/bin/activate
# Install dependencies
python -m pip install -r requirements.txtsource venv/bin/activate # if not already activated
./vortextricks.pyUpon execution, this script will:
- Detect Steam and GOG game libraries.
- Prompt you if the same title appears in both libraries.
- Ask whether to use the Steam copy, the GOG copy, or keep both in separate bottles.
- Create the necessary bottles or WINE prefixes.
- Register Windows registry entries for each game to enable auto-detection of the game path in Vortex.
- Create symlinks for
My Games&AppData. - Download and install Vortex if not present.
At the moment the script has no command‑line arguments.
After the script finishes, you may need to perform a few manual steps to complete the setup:
- Mod staging folder
Vortex needs a staging folder where it temporarily stores mods before deploying them. When running Vortex in Bottles (Flatpak), the default suggestions seem to work pretty well. You may be able to simply enable "Automatically use suggested path for staging folder" in Settings and let Vortex handle it. If that does not work, you will have to manually set your staging folder.
- Fork the repository.
- Create a new branch.
- Commit your changes with descriptive messages.
- Push the branch and open a pull request.
The registry of known games is stored in gameinfo.json.
To add a new game:
- Add an entry in the array, e.g.:
{
"name": "Example Game",
"game_id": "examplegame",
"steamapp_ids": ["123456"],
"gog_id": "987654321",
"ms_id": null,
"epic_id": null,
"registry_entries": {
"HKEY_LOCAL_MACHINE\\Software\\ExampleCompany\\ExampleGame": "Installed Path"
},
"override_mygames": "ExampleGame",
"override_appdata": "ExampleGame"
}- Validate the JSON against the schema:
python -c "import jsonschema, json, pathlib; schema = json.load(open('gameinfo.schema.json')); validator = jsonschema.Draft202012Validator(schema); json.load(open('gameinfo.json'))" || echo "Invalid JSON"- Rerun the script – the new game will now be recognized.
Tip – The
registry_entriesdictionary key is the full registry path; the value is the name of the key.vortextricks.pywill insert the game path as the value of the key.
| Symptom | Cause | Fix |
|---|---|---|
| ModuleNotFoundError | Virtual environment not active or requirements not installed | See Installation |
| RuntimeError: Could not locate bottles-cli | Prerequisites not installed. | Install Bottles via flatpak install com.usebottles.bottles |
| Duplicate game prompts not showing | The duplicate detection logic didn’t find overlapping game IDs | Ensure both game IDs are in gameinfo.json |
| Vortex UI is not scaled properly | Your desktop environment has implemented user interface scaling in a retarded way | Try running Vortex with --force-device-scale-factor=2 |
| Vortex window does not render properly | OpenGL errors | Try any of the following:
|
| fallout.ini keeps getting reset when launching the game | FalloutNVLauncher.exe is being launched instead of nvse_loader.exe | Use Proton-GE or Proton-CachyOS OR use the following launch option with Valve Proton: bash -c "DO=(%command%); \"\${DO[@]/%FalloutNVLauncher.exe/nvse_loader.exe}\""Note: Proton-GE 11-1, Proton-CachyOS 11.0-20260602 or older need the following additional step for Fallout: New Vegas: mkdir -p ~/.config/protonfixes/localfixes && curl -fsSL -o ~/.config/protonfixes/localfixes/22380.py https://raw.githubusercontent.com/Open-Wine-Components/umu-protonfixes/refs/heads/master/gamefixes-steam/22330.py && chmod +x ~/.config/protonfixes/localfixes/22380.py |
