8908c15974784fc9976403b9cc536d6c29c228bb
- proton: wrap the download sink in a small ProgressWriter that prints percent / MiB to stderr every 1 MiB so the ~600 MB GE-Proton pull isn't silent for minutes. No extra deps. - tray: store the ksni Handle on the tray itself so Quit can call shutdown() before exit(), unregistering the SNI item from D-Bus instead of leaving a stale entry until the session bus notices the PID is gone. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
battlenet-manager
A small system-tray daemon and CLI for running the Battle.net launcher on Linux via umu-launcher and GE-Proton.
Features
- Tray icon with Launch / Kill / Update-Proton menu (KDE, GNOME+AppIndicator, Xfce, any SNI-capable desktop).
- Background poller that reflects Battle.net's running state in the tray.
update-protonsubcommand that downloads GE-Proton releases directly from GitHub and installs them under the Steam compat tools directory.diagnosesubcommand that sanity-checks the environment (umu-run, prefix, Proton install, Vulkan, display server, stale agent.lock).
Install
cargo build --release
install -Dm755 target/release/battlenet-manager ~/.local/bin/battlenet-manager
Requires umu-launcher and tar on PATH. On Arch:
sudo pacman -S umu-launcher vulkan-tools
The Battle.net Launcher.exe itself is not bundled — run your existing
battlenet-umu-setup.sh (or install it manually into the prefix) before
first launch.
Usage
| Command | What it does |
|---|---|
battlenet-manager |
Start the tray daemon (default) |
battlenet-manager launch |
Launch Battle.net and return (for .desktop shortcuts) |
battlenet-manager kill |
SIGTERM → wait 3 s → SIGKILL on all Battle.net procs |
battlenet-manager diagnose |
Run environment health checks |
battlenet-manager update-proton |
Interactive GE-Proton picker |
update-proton --latest |
Install newest GE-Proton release |
update-proton --version X |
Install a specific tag (e.g. GE-Proton10-34) |
update-proton --list |
Show recent releases without installing |
Config
Lives at ~/.config/battlenet-manager/config.toml, written with defaults on
first run:
prefix_dir = "~/Games/battlenet-umu"
proton_version = "GE-Proton" # or a pinned tag like "GE-Proton10-34"
gameid = "umu-battlenet"
proton_compat_dir = "~/.local/share/Steam/compatibilitytools.d"
proton_version = "GE-Proton" tells umu-launcher to auto-fetch the latest
on each run. Setting it to a specific tag (done automatically by
update-proton) pins that version.
Languages
Rust
99.1%
Shell
0.9%