Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
75 commits
Select commit Hold shift + click to select a range
6b074f7
refactor: Rename to Wand Launcher
shymega Dec 25, 2025
baa09a5
fix: Manually point to Wand Nupkg archive
shymega Dec 25, 2025
994b989
refactor: Rename files, set executable bit
shymega Jul 11, 2024
526f969
refactor: Update references to renamed modules
shymega Jul 12, 2024
65f9286
refactor: Move Python files to directory, fix some typos
shymega Jul 12, 2024
4ab0c61
refactor: Convert project to Poetry, with Nix flake
shymega Jul 12, 2024
ce224bc
feat: Add initial util modules
shymega Jul 12, 2024
30eb0ba
fix: Update Poetry+Flake to work with Nix
shymega Jul 12, 2024
07b8847
refactor: Refactor Log and Configuration utils
shymega Jul 12, 2024
6069024
refactor: Begin tidy up of `consts.py`
shymega Jul 12, 2024
b9bfb8c
refactor: Prepare components for Python packaging
shymega Jul 12, 2024
e446d2e
chore(flake): Remove unused overrides
shymega Jul 12, 2024
a5a3fe0
chore: Add note for later fix
shymega Jul 12, 2024
a7f353f
feat: Add script to Poetry
shymega Jul 12, 2024
2d8399f
feat: Add initial start-up msg to CLI
shymega Jul 12, 2024
2286e14
refactor: Move from YAML to TOML
shymega Jul 12, 2024
b20236d
feat: Add initial Consts class, with `pathlib` support
shymega Jul 12, 2024
a3a5f48
feat: Get CLI to print STEAM_COMPAT_DATA_DIR
shymega Jul 12, 2024
445a66f
chore: Bump deps and remove deps
shymega Jul 12, 2024
a38152b
fix: Fix typo in STEAM_COMPAT_DATA_PATH env var
shymega Jul 12, 2024
f064705
fix: Remove debug print in `Configuration` class
shymega Jul 12, 2024
be4b002
fix: Rename import in accordance with dependency change to stdlib
shymega Jul 12, 2024
30ec491
chore: Run `black` on `utils/`
shymega Jul 13, 2024
4a8014e
fix(logger): Add optional env override for log file path
shymega Jul 13, 2024
abe272f
feat: Add initial GFX module - and welcome screen
shymega Jul 13, 2024
3a8c3e7
feat: Add initial Prefix module
shymega Jul 13, 2024
a810e3f
chore: Use Nixpkgs 24.05
shymega Jul 13, 2024
b5ea3ad
fix: Allow for Tkinter to work
shymega Jul 13, 2024
264c4e3
chore: Remove unused print in CLI
shymega Jul 13, 2024
d8c901d
refactor: Simplify gfx/WelcomeScreenGfx
shymega Jul 13, 2024
1376179
refactor: Return `None` rather than fail on non-existsent cfg key
shymega Jul 13, 2024
ec0d339
chore: Change Flake description
shymega Jul 13, 2024
0ef5f24
docs: Add notes in pyproject.toml
shymega Jul 13, 2024
fe35ad8
chore: Remove erroneous pyproject.toml
shymega Jul 13, 2024
5666966
fix: Add fallback to STEAM_COMPAT_DATA_PATH const
shymega Jul 13, 2024
ed897ef
chore: Bump Poetry lock
shymega Jul 13, 2024
3170e07
fix: Make logging less chatty
shymega Jul 13, 2024
8f91a66
refactor(Logger): Refactor `Logger` class
shymega Jul 13, 2024
7d2fb2d
fix: Fix typo in Flake overlay
shymega Jul 13, 2024
e3554c5
fix: Adjust path in Configuration class and fix Flake
shymega Jul 13, 2024
1251d41
feat: Add `devenv` support, hooks & flake-compat support
shymega Jul 13, 2024
706af53
feat: Add 'devcontainer' support
shymega Jul 13, 2024
e104b9d
fix: Remove unnecessary `.expanduser()`
shymega Jul 13, 2024
e60941c
fix: Remove `.`/`_` replacement logic for logging module
shymega Jul 13, 2024
61e5347
refactor: Use pyright and pass inputs to devenv
shymega Jul 13, 2024
0f7953e
feat: Add replacement `winepath`/`unixpath`
shymega Jul 13, 2024
fb166be
feat: Add more consts
shymega Jul 13, 2024
1378123
refactor: Use absolute module paths
shymega Jul 13, 2024
b248234
feat: Add initial (broken) PyInstaller support
shymega Jul 13, 2024
122de1d
fix: Fix lint error with literals in Logger
shymega Jul 13, 2024
5b79504
fix: Lock Python to Python 3.11
shymega Jul 13, 2024
cb58ff0
chore: Format `devenv.nix`
shymega Jul 13, 2024
bd99cec
feat: Export Tcl/Tk libraries
shymega Jul 13, 2024
4b8370f
chore: Remove erroneous print statement
shymega Jul 13, 2024
95c0b91
fix(core_nodeps): Revert debugging change
shymega Jul 13, 2024
bf964d1
fix(WineUtils): Fix potential breakages in WinNT path test
shymega Jul 13, 2024
35483d2
feat: Add caching for WeMod logo download
shymega Jul 13, 2024
5bb605e
fix: Simplify pyinstaller.py script (Poetry)
shymega Jul 13, 2024
b335c29
fix(envrc): Use devenv in envrc
shymega Jul 13, 2024
69e9e6f
refactor: Migrate to PDM from Poetry
shymega Nov 16, 2024
fcfe417
refactor: Simplify Nix Flake
shymega Apr 18, 2025
9ee2b22
feat: Add DownloadPopupGfx utility
shymega Jun 7, 2025
3490321
refactor(wine_utils): Use regex for matching paths
shymega Jun 7, 2025
b8afabe
chore: Bump `nixpkgs` -> `nixos-25.05`
shymega Jun 7, 2025
5ae1492
fix: Disable Nix-managed pre-commit hooks
shymega Jun 7, 2025
4711ab4
chore: Remove `poetry.lock`
shymega Jun 7, 2025
d325ed1
chore: Regenerate `pdm.lock`
shymega Jun 8, 2025
14b2c6f
refactor: Migrate to PyQt6 for graphics/GUI
shymega Jul 8, 2025
2384858
refactor: Refactor Flake and devenv
shymega Jul 8, 2025
a5eed95
feat: Add path tests to pfx/wine_utils
shymega Jul 8, 2025
cd5fb35
refactor: Refactor Flake
shymega Oct 5, 2025
538fcf2
chore: Run `ruff` on `src/wemod_launcher`
shymega Oct 5, 2025
0ec16df
chore: Update license test in {default,shell}.nix
shymega Oct 5, 2025
acd36d9
fix: Update references to `WeMod`
shymega Dec 25, 2025
1e7a6e3
chore: Update Flake inputs and outputs
shymega Dec 26, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions .devcontainer.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
{
"customizations": {
"vscode": {
"extensions": [
"mkhl.direnv"
]
}
},
"image": "ghcr.io/cachix/devenv/devcontainer:latest",
"overrideCommand": false,
"updateContentCommand": "devenv test"
}
10 changes: 10 additions & 0 deletions .envrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
if ! has nix_direnv_version || ! nix_direnv_version 2.2.1; then
source_url "https://raw.githubusercontent.com/nix-community/nix-direnv/2.2.1/direnvrc" "sha256-zelF0vLbEl5uaqrfIzbgNzJWGmLzCmYAkInj/LNxvKs="
fi

watch_file flake.nix
watch_file flake.lock
if ! use flake . --impure
then
echo "devenv could not be built. The devenv environment was not loaded. Make the necessary changes to devenv.nix and hit enter to try again." >&2
fi
14 changes: 14 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -8,3 +8,17 @@ wemod.conf
wemod.log
winetricks
pip.pyz
# Devenv
.devenv*
devenv.local.nix

# direnv
.direnv

# pre-commit
.pre-commit-config.yaml

/dist

/.pdm-build
/.pdm-python
78 changes: 39 additions & 39 deletions readme.md → README.md
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
# WeMod Launcher (Wemod for Linux)
# Wand Launcher (Wand for Linux)

**The WeMod Launcher is currently on version 1.535.**
**The Wand Launcher is currently on version 1.535.**

## DISCLAIMER
This project is *NOT* affiliated with, funded by, or paid by WeMod.
This project is *NOT* affiliated with, funded by, or paid by Wand.
The work done here is purely from the contributors who donate their time and effort.
WeMod (the company) makes WeMod (the mod tool).
We (`wemod-launcher`) enable you to run it on Linux (and by extension, the Steam Deck).
Wand (the company) makes Wand (the mod tool).
We (`wand-launcher`) enable you to run it on Linux (and by extension, the Steam Deck).

## Support & Contributions

Expand Down Expand Up @@ -36,9 +36,9 @@ If this tool helps you, please consider one or more of the following:
[GitHub](https://github.com/JohnHamwi)

For more help or to contribute:
* Suggest improvements via [GitHub Discussions](https://github.com/DeckCheatz/wemod-launcher/discussions)
* See the [Wiki Suggestions](https://github.com/DeckCheatz/wemod-launcher/wiki/Suggestions) and [Changes](https://github.com/DeckCheatz/wemod-launcher/wiki/Changes)
* Report / Help solve issues or bugs by [filing / answering an Issue](https://github.com/DeckCheatz/wemod-launcher/issues)
* Suggest improvements via [GitHub Discussions](https://github.com/DeckCheatz/wand-launcher/discussions)
* See the [Wiki Suggestions](https://github.com/DeckCheatz/wand-launcher/wiki/Suggestions) and [Changes](https://github.com/DeckCheatz/wand-launcher/wiki/Changes)
* Report / Help solve issues or bugs by [filing / answering an Issue](https://github.com/DeckCheatz/wand-launcher/issues)

## Rework Project (Led by shymega)

Expand All @@ -51,20 +51,20 @@ We are calling for contributors to assist with:
* **Wiki writers & documenters**: Help write guides and technical documentation for the rework.

Want to get involved?
* [Join the Discussion on GitHub](https://github.com/DeckCheatz/wemod-launcher/discussions)
* [Track the Rework Progress](https://github.com/DeckCheatz/wemod-launcher/pull/180))
* [Join the Discussion on GitHub](https://github.com/DeckCheatz/wand-launcher/discussions)
* [Track the Rework Progress](https://github.com/DeckCheatz/wand-launcher/pull/180))
* Or reach out to shymega directly via GitHub.

## Quick Guide
![Alert](https://cdn.discordapp.com/emojis/1049837871772729354.gif?size=20&quality=lossless) **This guide only includes the most relevant info and might not be enough to run WeMod;**
in which case, check out the [Full Guide](https://github.com/DeckCheatz/wemod-launcher/wiki/Full-Guide) **OR** the [video tutorial by Marvin1099](https://youtu.be/5UlVCZvIl1E).
![Alert](https://cdn.discordapp.com/emojis/1049837871772729354.gif?size=20&quality=lossless) **This guide only includes the most relevant info and might not be enough to run Wand;**
in which case, check out the [Full Guide](https://github.com/DeckCheatz/wand-launcher/wiki/Full-Guide) **OR** the [video tutorial by Marvin1099](https://youtu.be/5UlVCZvIl1E).

- **Optional:** If you have access to another PC and wish to control the Steam Deck remotely,
consider using **[RustDesk](https://github.com/rustdesk/rustdesk/releases/latest)** for easier setup (the `.flatpak` is easiest).

- **Info:** [License Change](https://github.com/DeckCheatz/wemod-launcher/discussions/131)
- **Info:** [License Change](https://github.com/DeckCheatz/wand-launcher/discussions/131)

- **Info:** Games no longer seem to be detected by **Wemod**. If anyone has info on how **Wemod** finds games please make a new issue. If you have no idea please **don't** make a bug report. We cant fix this if we don't know how. You will have to add the game manualy right now.
- **Info:** Games no longer seem to be detected by **Wand**. If anyone has info on how **Wand** finds games please make a new issue. If you have no idea please **don't** make a bug report. We cant fix this if we don't know how. You will have to add the game manualy right now.

1. Python `python-venv` (or `python3-venv` or `venv` or `virtualenv`; use first one found)
and `Tk` need to be installed.
Expand All @@ -73,40 +73,40 @@ consider using **[RustDesk](https://github.com/rustdesk/rustdesk/releases/latest
- Ubuntu/Debian: `sudo apt install python3-tk`
- Arch Linux: `sudo pacman -S tk`.
- Fedora: `sudo dnf install python3-tkinter`
3. Install GE-Proton, which is necessary to run the game and WeMod with. Using Valve's own Proton seems to work, but using GE-Proton is recommended:
3. Install GE-Proton, which is necessary to run the game and Wand with. Using Valve's own Proton seems to work, but using GE-Proton is recommended:
1. Search for and install `ProtonUp-QT` via your distro's software center. If using Flatpak, command is: `flatpak install net.davidotek.pupgui2`.
2. Download the latest GE-Proton in `ProtonUp-QT`
4. Restart Steam/SteamOS.
5. In a terminal session (Konsole if using KDE Plasma):
1. Change directory to a location of your choosing, then run `git clone https://github.com/DeckCheatz/wemod-launcher`.
Make note of the directory obtained with `readlink -f wemod-launcher` (which will be labeled `{path/to/wemod-launcher}` for the rest of this guide).
2. Run `chmod -R ug+x wemod-launcher`.
**NOTE:** To use this tool with the Flatpak version of Steam (not recomended), continue [here](https://github.com/DeckCheatz/wemod-launcher/wiki/Steam-Flatpak-Usage).
6. In your Steam Library, open the game settings with which to run WeMod with. Make sure you ran the game once before doing this!
1. Change directory to a location of your choosing, then run `git clone https://github.com/DeckCheatz/wand-launcher`.
Make note of the directory obtained with `readlink -f wand-launcher` (which will be labeled `{path/to/wand-launcher}` for the rest of this guide).
2. Run `chmod -R ug+x wand-launcher`.
**NOTE:** To use this tool with the Flatpak version of Steam (not recomended), continue [here](https://github.com/DeckCheatz/wand-launcher/wiki/Steam-Flatpak-Usage).
6. In your Steam Library, open the game settings with which to run Wand with. Make sure you ran the game once before doing this!
1. In the `Compatibility` tab, change the Proton version to the one picked in Step 2, or otherwise to the latest numbered Proton (e.g. Proton-9.0).
2. Under `Launch Options`, input `{path/to/wemod-launcher}/wemod %command%`.
2. Under `Launch Options`, input `{path/to/wand-launcher}/wand %command%`.
7. Start the game.
8. Select "no" to the "copy prefix question" if it appears and says `might work`.
If it mentions `likely works` (or better) go to step 9 (accept all).
9. Select download.
10. Select Yes/Ok until no more windows appear.
All rundll32.exe errors can safely be ignored (by clicking `no`).
WeMod should start with the game.
11. (Only done once): Login to your WeMod account.
12. Select the game you're running from the library, then click the Play to start the WeMod engine.
13. You may now set or switch mods. Closing the WeMod window will keep it running in the background.
Wand should start with the game.
11. (Only done once): Login to your Wand account.
12. Select the game you're running from the library, then click the Play to start the Wand engine.
13. You may now set or switch mods. Closing the Wand window will keep it running in the background.

wemod-launcher will automatically update if you installed it using step 5.
**But**: This will only work if you have [launcher version 1.092 or older](https://github.com/DeckCheatz/wemod-launcher/wiki/The-Self-Update).
wand-launcher will automatically update if you installed it using step 5.
**But**: This will only work if you have [launcher version 1.092 or older](https://github.com/DeckCheatz/wand-launcher/wiki/The-Self-Update).

**Optionally**: Check out tutorials on how to use specific [WeMod Laucher features](https://github.com/DeckCheatz/wemod-launcher/wiki/Launcher-Tutorials)
**Like**: Check how to [Use External Launchers](https://github.com/DeckCheatz/wemod-launcher/wiki/Using-External-Launchers) (Use The WeMod Launcher outside of Steam)
**OR**: Check out how to [Edit The Config](https://github.com/DeckCheatz/wemod-launcher/wiki/Config-Usage)
**Optionally**: Check out tutorials on how to use specific [Wand Laucher features](https://github.com/DeckCheatz/wand-launcher/wiki/Launcher-Tutorials)
**Like**: Check how to [Use External Launchers](https://github.com/DeckCheatz/wand-launcher/wiki/Using-External-Launchers) (Use The Wand Launcher outside of Steam)
**OR**: Check out how to [Edit The Config](https://github.com/DeckCheatz/wand-launcher/wiki/Config-Usage)

## Common Issues

### Dot Net Error
* If you see a .net error in Wemod that means your prefix is messed up.
* If you see a .net error in Wand that means your prefix is messed up.
* After you close the game the troubleshooter should come up (close ingame not from steam).
1. There select "delete prefix" or something like that.
2. Rerun the game, and when it asks you to use a already installed prefix, with some version, say no.
Expand All @@ -116,16 +116,16 @@ wemod-launcher will automatically update if you installed it using step 5.

## ![Heart](https://cdn.discordapp.com/emojis/1113579886439833690.gif?size=20&quality=lossless) Additional

![WeModApp](https://cdn.discordapp.com/emojis/761419274945953842.webp?size=20&quality=lossless) **Video Tutorial:** [WeMod-launcher Setup Tutorial by Marvin1099](https://youtu.be/5UlVCZvIl1E)
![WeModApp](https://cdn.discordapp.com/emojis/1113579884749529198.gif?size=20&quality=lossless) **Guide was written by Trippin and updated by Marvin1099.**
![WeModApp](https://cdn.discordapp.com/emojis/1113579884749529198.gif?size=20&quality=lossless) **WeMod Linux is developed by DaniAsh551 with recent support by Marvin1099.**
![WeModApp](https://cdn.discordapp.com/emojis/999743709677633536.gif?size=20&quality=lossless) **If you find this guide to be helpful, we encourage you to star the project.**
![WandApp](https://cdn.discordapp.com/emojis/761419274945953842.webp?size=20&quality=lossless) **Video Tutorial:** [Wand-launcher Setup Tutorial by Marvin1099](https://youtu.be/5UlVCZvIl1E)
![WandApp](https://cdn.discordapp.com/emojis/1113579884749529198.gif?size=20&quality=lossless) **Guide was written by Trippin and updated by Marvin1099.**
![WandApp](https://cdn.discordapp.com/emojis/1113579884749529198.gif?size=20&quality=lossless) **Wand Linux is developed by DaniAsh551 with recent support by Marvin1099.**
![WandApp](https://cdn.discordapp.com/emojis/999743709677633536.gif?size=20&quality=lossless) **If you find this guide to be helpful, we encourage you to star the project.**


<a href="https://star-history.com/#DeckCheatz/wemod-launcher&Date">
<a href="https://star-history.com/#DeckCheatz/wand-launcher&Date">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=DeckCheatz/wemod-launcher&type=Date&theme=dark" />
<source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=DeckCheatz/wemod-launcher&type=Date" />
<img alt="Star History Chart" src="https://api.star-history.com/svg?repos=DeckCheatz/wemod-launcher&type=Date" />
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=DeckCheatz/wand-launcher&type=Date&theme=dark" />
<source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=DeckCheatz/wand-launcher&type=Date" />
<img alt="Star History Chart" src="https://api.star-history.com/svg?repos=DeckCheatz/wand-launcher&type=Date" />
</picture>
</a>
17 changes: 17 additions & 0 deletions default.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# SPDX-FileCopyrightText: 2024-2025 The DeckCheatz Developers
#
# SPDX-License-Identifier: AGPL-3.0-only
(
import
(
let
lock = builtins.fromJSON (builtins.readFile ./flake.lock);
in
fetchTarball {
url = "https://github.com/edolstra/flake-compat/archive/${lock.nodes.flake-compat.locked.rev}.tar.gz";
sha256 = lock.nodes.flake-compat.locked.narHash;
}
)
{src = ./.;}
)
.defaultNix
Loading
Loading