English · Deutsch
A small desktop app that switches the mod folder of 7 Days to Die — one click, no copying files around. It ships as a self-contained AppImage, keeps a dark UI, and speaks English and German (switchable inside the app, remembered).
The game loads its mods from <game folder>/7 Days To Die/Mods. The app puts a symlink there
that points at one of your prepared mod sets, so you can jump between mod packs without moving
a single file:
- lists every mod set in your own mod folder, with the number of mods inside
- marks the active set in green and shows an ACTIVE badge
- click anywhere on a row to select it, then Activate
- never deletes anything: a real
Modsfolder is renamed toMods-Original-<date>first - the symlink can be created and removed again from inside the app at any time
Nothing has to be set up beforehand — the window shows a short checklist instead of an error, with the button that fixes each line:
- Game folder — found automatically in your Steam libraries; if not, pick it here or later.
- Mod folder — one click on Create folder makes
~/7 Days; you can also point it anywhere else. - Mod sets — put one subfolder per mod pack into that folder (e.g.
Vanilla,Overhaul), then press Reload.
The checklist disappears as soon as everything is in place. A missing game folder no longer blocks anything: you can collect mod sets first and only Activate needs the game.
Ready-to-run AppImage for x86_64: see Releases. Download it, set
chmod +x, double-click. Python and PySide6 are bundled — nothing to install. On systems
without FUSE2 use ./7D2D-Mod-Switcher-x86_64.AppImage --appimage-extract-and-run.
Two downloads are available for Windows:
| File | Use |
|---|---|
7D2D-Mod-Switcher-Setup-1.2.1.exe |
recommended — installs for the current user (no admin rights), creates a Start-menu entry, an optional desktop icon and an uninstall entry under Apps & features |
7D2D-Mod-Switcher.exe |
single file, runs straight from any folder without installing |
Both create a junction instead of a symlink — junctions need neither administrator rights nor
Developer Mode. Everything else works the same; the config lives in
%APPDATA%\7d2d-mod-switcher\config.json.
Build it yourself on Windows:
python -m pip install PySide6 pyinstaller
winget install --id JRSoftware.InnoSetup -e
powershell -ExecutionPolicy Bypass -File packaging\win\build.ps1
iscc packaging\win\installer.iss # → dist\7D2D-Mod-Switcher-Setup-<version>.exeRequirements: Linux, Python 3.10+ and PySide6
sudo pacman -S pyside6 # Arch/CachyOS
python3 -m pip install --user PySide6 # other distributions
python3 mod_switcher.pyOptional desktop starter: copy packaging/7d2d-mod-switcher.desktop to
~/.local/share/applications/ and adjust the path in Exec=.
EN / DE in the top right of the main window. The choice is written to the config file and
restored on the next start. Without a saved choice the app follows the system locale and falls
back to English.
On first start the game folder is detected automatically: every Steam library listed in
~/.local/share/Steam/steamapps/libraryfolders.vdf (Flatpak Steam included). If nothing is
found, pick it via Paths…. Your own mod folder defaults to ~/7 Days.
Both paths and the language are remembered in ~/.config/7d2d-mod-switcher/config.json:
{
"game_dir": "/path/to/7 Days To Die",
"mod_base": "/path/to/your/mods",
"language": "en"
}Inside the mod folder every subfolder is one mod set (e.g. Vanilla, Overhaul). The app
lists all of them with their mod count; the active one is highlighted in green.
The app never deletes files. It only replaces the Mods symlink inside the game folder.
If Mods is still a real directory, the app asks on startup:
Create a symlink for Mods? You can undo this in the app at any time.
Answering Yes renames the existing folder to Mods-Original-<date> (nothing inside is lost)
and then links the first mod set. No leaves everything as it is; you can do it later via
Paths… → Create symlink.
The Paths… dialog offers two buttons for this:
- Create symlink — backs up a real folder and creates the symlink.
- Remove symlink — removes only the symlink; the game then starts without mods. An existing
Mods-Original-<date>backup stays where it is.
Windows: supported since 1.2.0. The app links with a junction there (
mklink /J), which works for normal users without Developer Mode. Tested on Windows 11 with Python 3.12 and PySide6 6.12.
- Click anywhere on a row to select that mod set.
- Activate switches over; if the set is already active the button reads Already active.
- Reload re-reads the mod folder (after adding a set).
- Paths… changes game folder, mod folder and the symlink; a mod folder that does not exist yet can be created right there.
MODSWITCH_GAME_DIR, MODSWITCH_MOD_BASE, MODSWITCH_CONFIG, MODSWITCH_UI_KIT and
MODSWITCH_LANG override the settings. MODSWITCH_AUTO=<name> activates a set and quits
immediately, MODSWITCH_AUTO=__close__ only opens and closes the window, MODSWITCH_NO_ASK=1
suppresses the startup question.
| Path | Purpose |
|---|---|
mod_switcher.py |
the application |
i18n.py |
all English and German texts |
assets/ |
logo (window/starter) |
ui_kit/ |
shared look (colors, radio buttons, check marks) |
tests/ |
checks against a throwaway folder, README screenshots |
packaging/appimage/ |
recipe and build for the AppImage |
packaging/win/ |
PowerShell build for the Windows .exe |
packaging/7d2d-mod-switcher.desktop |
starter file for a local install |
QT_QPA_PLATFORM=offscreen python3 tests/test_mod_switcher.py # Linux
python tests\test_mod_switcher.py # WindowsThe checks run in a temporary directory and never touch the real game folder. On Windows the
interpreter can still end with code 0xC0000005 (a Qt teardown quirk); the checks themselves are
green — the final line says Alle Prüfungen grün / all checks green.
cd packaging/appimage
./build.shIt needs python-appimage and appimagetool (the script creates its own venv in the build
folder and downloads both).
MIT — see LICENSE.
Kleine Desktop-Anwendung, die den Mod-Ordner von 7 Days to Die umschaltet — ein Klick, kein Kopieren von Dateien. Sie kommt als eigenständiges AppImage, hat eine dunkle Oberfläche und spricht Deutsch und Englisch (in der App umschaltbar und gemerkt).
Das Spiel lädt seine Mods aus <Spielordner>/7 Days To Die/Mods. Die Anwendung legt dort
einen Symlink an, der auf einen von mehreren vorbereiteten Mod-Sätzen zeigt:
- listet alle Mod-Sätze im eigenen Mod-Ordner, jeweils mit Anzahl der enthaltenen Mods
- markiert den aktiven Satz grün und mit AKTIV
- Klick irgendwo auf einen Balken wählt aus, Aktivieren schaltet um
- löscht nie etwas: ein echter Ordner
Modswird vorher zuMods-Original-<Datum>umbenannt - Symlink lässt sich jederzeit in der App wieder anlegen und entfernen
Es muss vorher nichts eingerichtet werden — statt einer Fehlermeldung zeigt das Fenster eine kurze Checkliste, und neben jeder offenen Zeile steht der Knopf, der sie erledigt:
- Spielordner — wird in den Steam-Bibliotheken automatisch gefunden, sonst hier oder später wählen.
- Mod-Ordner — ein Klick auf Ordner anlegen erzeugt
~/7 Days; jeder andere Ort geht auch. - Mod-Pakete — pro Paket einen Unterordner hineinlegen (z. B.
Vanilla,Overhaul), dann Neu einlesen drücken.
Sobald alles steht, verschwindet die Checkliste. Ein fehlender Spielordner blockiert nichts mehr: Mod-Pakete lassen sich vorbereiten, nur Aktivieren braucht das Spiel.
Fertige AppImage für x86_64 unter Releases: herunterladen,
chmod +x setzen, doppelklicken. Python und PySide6 sind enthalten. Ohne FUSE2:
./7D2D-Mod-Switcher-x86_64.AppImage --appimage-extract-and-run.
Für Windows gibt es zwei Downloads:
| Datei | Zweck |
|---|---|
7D2D-Mod-Switcher-Setup-1.2.1.exe |
empfohlen — installiert für den aktuellen Benutzer (keine Administratorrechte), legt Startmenü-Eintrag, wahlweise ein Desktopsymbol und einen Eintrag unter Apps & Features zum Deinstallieren an |
7D2D-Mod-Switcher.exe |
einzelne Datei, läuft ohne Installation aus jedem Ordner |
Beide legen unter Windows eine Junction statt eines Symlinks an — dafür braucht es weder Administrator-
rechte noch den Entwicklermodus. Alles andere ist gleich; die Konfiguration liegt in
%APPDATA%\7d2d-mod-switcher\config.json.
Selbst bauen unter Windows:
python -m pip install PySide6 pyinstaller
winget install --id JRSoftware.InnoSetup -e
powershell -ExecutionPolicy Bypass -File packaging\win\build.ps1
iscc packaging\win\installer.iss # → dist\7D2D-Mod-Switcher-Setup-<Version>.exesudo pacman -S pyside6 # Arch/CachyOS
python3 -m pip install --user PySide6 # andere Distributionen
python3 mod_switcher.pyWahlweise als Starter: packaging/7d2d-mod-switcher.desktop nach
~/.local/share/applications/ kopieren und den Pfad in Exec= anpassen.
DE / EN oben rechts im Hauptfenster. Die Wahl landet in der Konfigurationsdatei und gilt
beim nächsten Start wieder. Ohne gespeicherte Wahl folgt die App der Systemsprache und fällt
sonst auf Englisch zurück.
Beim ersten Start wird der Spielordner automatisch gesucht: alle Steam-Bibliotheken aus
~/.local/share/Steam/steamapps/libraryfolders.vdf (auch Flatpak-Steam). Wird nichts
gefunden, lässt er sich über Pfade… auswählen. Der eigene Mod-Ordner ist voreingestellt
auf ~/7 Days.
Beide Pfade und die Sprache werden in ~/.config/7d2d-mod-switcher/config.json gemerkt:
{
"game_dir": "/pfad/zu/7 Days To Die",
"mod_base": "/pfad/zu/eigenen/mods",
"language": "de"
}Im Mod-Ordner ist jeder Unterordner ein Mod-Satz (z. B. Vanilla, Overhaul). Die
Anwendung zeigt alle Sätze mit der Anzahl enthaltener Mods; der aktive ist grün markiert.
Die Anwendung löscht keine Dateien. Sie ersetzt ausschließlich den Symlink Mods im
Spielordner.
Ist Mods noch ein echter Ordner, fragt die Anwendung beim Start:
Symlink für Mods anlegen? Kann jederzeit in der App rückgängig gemacht werden.
Mit „Ja“ wird der vorhandene Ordner zuerst nach Mods-Original-<Datum> umbenannt (nichts
darin geht verloren) und dann der Symlink auf den ersten Mod-Satz angelegt. Mit „Nein“ bleibt
alles, wie es ist; die Frage lässt sich über Pfade… → Symlink anlegen jederzeit nachholen.
Im Dialog Pfade… stehen dafür zwei Knöpfe:
- Symlink anlegen — sichert einen echten Ordner und legt den Symlink an.
- Symlink entfernen — entfernt nur den Symlink; das Spiel startet danach ohne Mods. Eine
vorhandene Sicherung
Mods-Original-<Datum>bleibt liegen.
Windows: seit 1.2.0 unterstützt. Die App verknüpft dort mit einer Junction (
mklink /J), die auch ohne Entwicklermodus für normale Benutzer funktioniert. Geprüft auf Windows 11 mit Python 3.12 und PySide6 6.12.
- Klick irgendwo auf einen Balken wählt den Mod-Satz aus.
- Aktivieren schaltet um; ist der Satz schon aktiv, heißt der Knopf „Bereits aktiv“.
- Neu einlesen liest den Mod-Ordner neu (nach dem Anlegen eines Satzes).
- Pfade… ändert Spielordner, Mod-Ordner und den Symlink; ein noch fehlender Mod-Ordner lässt sich dort direkt anlegen.
MODSWITCH_GAME_DIR, MODSWITCH_MOD_BASE, MODSWITCH_CONFIG, MODSWITCH_UI_KIT und
MODSWITCH_LANG überschreiben die Einstellungen. MODSWITCH_AUTO=<name> aktiviert einen Satz
und beendet die Anwendung sofort, MODSWITCH_AUTO=__close__ öffnet und schließt sie nur,
MODSWITCH_NO_ASK=1 unterdrückt die Start-Rückfrage.
| Pfad | Zweck |
|---|---|
mod_switcher.py |
die Anwendung |
i18n.py |
alle deutschen und englischen Texte |
assets/ |
Logo (Fenster/Starter) |
ui_kit/ |
gemeinsames Aussehen (Farben, Radiobuttons, Häkchen) |
tests/ |
Prüfläufe gegen einen Wegwerf-Ordner, README-Bilder |
packaging/appimage/ |
Rezept und Baulauf für das AppImage |
packaging/win/ |
PowerShell-Bau für die Windows-.exe |
packaging/7d2d-mod-switcher.desktop |
Starterdatei für lokale Installation |
QT_QPA_PLATFORM=offscreen python3 tests/test_mod_switcher.py # Linux
python tests\test_mod_switcher.py # WindowsDie Prüfungen laufen in einem temporären Verzeichnis und fassen den echten Spielordner nicht an.
Unter Windows kann der Prozess am Ende trotzdem mit Code 0xC0000005 beenden (Eigenheit von Qt
beim Aufräumen) — die Prüfungen selbst sind grün, die letzte Zeile lautet Alle Prüfungen grün.
cd packaging/appimage
./build.shNötig sind python-appimage und appimagetool (das Skript legt beides in einer eigenen venv
im Build-Ordner ab und lädt sie herunter).
MIT — siehe LICENSE.




