No description
Find a file
GeekBot d6f15fb845
All checks were successful
Build / build (push) Successful in 6m38s
feat: transparent window controls over banner, version moved to bottom-left
2026-07-21 07:53:43 +00:00
.forgejo/workflows ci: remove code signing step 2026-07-21 05:28:11 +00:00
assets Add README + LICENSE; website theming, auto-detect, single Win7-compatible exe 2026-07-07 23:23:47 +02:00
certs ci: add Forgejo Actions workflow with Certum code signing 2026-07-20 13:37:00 +00:00
src feat: transparent window controls over banner, version moved to bottom-left 2026-07-21 07:53:43 +00:00
.gitignore Add README + LICENSE; website theming, auto-detect, single Win7-compatible exe 2026-07-07 23:23:47 +02:00
build-release.sh Patch WoW.exe in place instead of downloading it; reduce AV footprint 2026-07-12 14:03:23 +02:00
build.rs Patch WoW.exe in place instead of downloading it; reduce AV footprint 2026-07-12 14:03:23 +02:00
Cargo.lock Patch WoW.exe in place instead of downloading it; reduce AV footprint 2026-07-12 14:03:23 +02:00
Cargo.toml Patch WoW.exe in place instead of downloading it; reduce AV footprint 2026-07-12 14:03:23 +02:00
LICENSE Add README + LICENSE; website theming, auto-detect, single Win7-compatible exe 2026-07-07 23:23:47 +02:00
README.md Add README + LICENSE; website theming, auto-detect, single Win7-compatible exe 2026-07-07 23:23:47 +02:00

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.exe using 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-launcher to 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.