Goopie Launcher

Goopie Launcher is a lightweight desktop tool for Goopie that bridges native functionality via an HTTP server and supports an offline mode.

README

Goopie Launcher

A lightweight, native desktop launcher for Goopie.

Architecture

The launcher loads the live UI from https://goopie.xyz and bridges native functionality via a synchronous loopback HTTP server on 127.0.0.1:<random port>. At startup, a JS initialisation script is injected (before the page runs) that defines every window.* global as a synchronous XMLHttpRequest to the bridge server.

This approach keeps the website completely unchanged while providing the same synchronous call semantics the site expects.

Building

Prerequisites
# Rust (stable)
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

# Tauri CLI
cargo install tauri-cli --version "^2"

# Linux: system libraries
sudo apt-get install libwebkit2gtk-4.1-dev libappindicator3-dev librsvg2-dev patchelf build-essential libssl-dev pkg-config

Then, clone:

git clone --recurse-submodules https://github.com/birabittoh/GoopieLauncher
cd GoopieLauncher
Development
npm run dev
Production build
cargo tauri build

Bundles are output to src-tauri/target/release/bundle/.

URL selection

The launcher URL is resolved in this priority order:

  1. --url <URL> CLI argument
  2. --local CLI flag โ†’ http://localhost:5173/
  3. GOOPIE_URL environment variable
  4. If the user has explicitly enabled offline mode (see Offline mode), that's honored unconditionally โ€” no connectivity probe, no requests to goopie.xyz at all
  5. Otherwise (the user prefers online): probe https://goopie.xyz's reachability on this launch and fall back to the embedded offline bundle if it can't be reached

Options 1โ€“3 are dev overrides and bypass offline-mode resolution entirely.

Offline mode

The launcher ships an embedded, statically-served copy of GoopieWebsite (vendored as the GoopieWebsite git submodule, pinned to its tauri-support branch) with enough functionality to browse and launch installed games.

Build the embedded offline bundle from the submodule:

./scripts/build-offline-site.sh

Start the launcher in offline mode by using --offline.

Configuration

PlatformLocation
WindowsRegistry HKCU\Software\GoopieLauncher
Linux~/.config/GoopieLauncher/config.ini

Games are stored under:

  • Windows: %LOCALAPPDATA%\Goopie\Games\
  • Linux: ~/.local/share/Goopie/Games/

Packaging

This launcher normally updates in place as soon as it detects a new version has been published on GitHub.

If you want to handle updates on your own, just start it with the GOOPIE_DISABLE_UPDATER env var set to 1. For example, in a .desktop file:

Exec=env GOOPIE_DISABLE_UPDATER=1 /opt/goopielauncher/goopie-launcher

Credits

  • VDFLib by Graine25: the Steam shortcuts.vdf binary format handling and shortcut-appid algorithm in src-tauri/src/shortcuts.rs are a Rust port of this library.