|
|
||
|---|---|---|
| .forgejo/workflows | ||
| assets | ||
| certs | ||
| src | ||
| .gitignore | ||
| build-release.sh | ||
| build.rs | ||
| Cargo.lock | ||
| Cargo.toml | ||
| LICENSE | ||
| README.md | ||
GeekServers Launcher
A desktop launcher for the GeekServers World of Warcraft private servers. It installs, verifies, patches and launches the supported 1.12 (NostalGeek) and 2.4.3 (TheGeekCrusade) clients, and surfaces live server status, news and the changelog from the website — all in a single native binary that shares the GeekServers look and feel.
Built in Rust with egui / eframe.
Features
- Install any supported client (NostalGeek EN/FR, TheGeekCrusade EN/FR): downloads the full-client archive, verifies its SHA-256, extracts it, sets the realmlist, and can create a desktop shortcut.
- Point to an existing installation instead of downloading.
- Auto-detect — if the launcher sits inside a WoW folder, it recognises the client (product + locale) automatically and offers to play it.
- Verify & patch using a manifest of file sizes + MD5 hashes; only changed files are downloaded. The launcher always asks before downloading an update — nothing is patched without confirmation.
- Play — one click checks the client and, if it is already up to date, launches the game immediately; otherwise it offers to update first.
- Shortcut mode (
gs-launcher --client=<path>) — a compact window that checks for updates and launches the game, for desktop shortcuts. - Server status — live Auth / NostalGeek / TheGeekCrusade indicators with online player counts.
- News & Changelog — the latest posts and per-realm changelog fetched from the website, with links back to the full pages.
- Discord & website shortcuts, English / French UI.
Supported platforms
- Windows 7 through 11 (64-bit). A single native
gs-launcher.exeusing the OpenGL (glow) renderer; the one Win8+ API import is PE-patched for Win7. - Linux (X11 / Wayland). Runs the game through Wine when needed.
The launcher uses OpenGL. On machines / virtual machines without an OpenGL 3.x capable driver the window may fail to open.
Building
Development build
cargo run # launch the GUI
cargo test # run the test suite
cargo clippy # lint
Release binaries
build-release.sh produces the shippable binaries in dist/ (the Windows exe
is cross-compiled in Docker):
./build-release.sh
# -> dist/gs-launcher-linux native 64-bit Linux
# -> dist/gs-launcher.exe native 64-bit Windows (Win7+)
Requirements: a Rust toolchain for the dev build, and Docker for the Windows cross-compile.
Usage
- Run
gs-launcherto open the launcher. - Run
gs-launcher --client=<path-to-wow-dir>to check + play a specific client (used by the desktop shortcut).
Environment variables
| Variable | Purpose | Default |
|---|---|---|
GS_PATCH_BASE |
Base URL for patch manifests | https://dl.geekservers.gg/patch |
GS_SITE_BASE |
Base URL for the website API (news, status) | https://geekservers.gg |
WINE |
Wine binary used to launch the game on Linux | wine |
Configuration (language preference, registered clients) is stored at
<config-dir>/gs-launcher/config.json.
Project layout
src/
main.rs entry point, window setup, CLI (--client)
app.rs application state + view state machine
catalog.rs the installable clients and their download sources
config.rs persisted config + local client auto-detection
client.rs WoW client detection (product / locale / build)
install.rs download + verify + extract a full client
sync.rs patch engine (manifest diff, check-only + apply)
shortcut.rs desktop shortcut creation
server_status.rs / news.rs / changelog.rs website API clients
process.rs launch / detect / stop the game
mpq.rs minimal MPQ reader (locale detection)
style.rs theme (colours, fonts) matching the website
ui/ egui views: home, install, patch, shortcut, widgets
The launcher talks to the website's public GET /api/server-status,
GET /api/news/latest and GET /api/bugtracker/{server}/changelog endpoints.
License
Source code is released under the MIT License.
Bundled brand assets (logo, background, icon) and the display font are not covered by the MIT license and remain the property of their respective owners — see LICENSE for details. "World of Warcraft" is a trademark of Blizzard Entertainment, Inc.; this is a non-commercial, fan-made project not affiliated with Blizzard.