7de6f6d938
- launcher: set PROTONPATH to full install path for pinned Proton versions; the raw tag name doesn't resolve when umu-run looks it up. - proton: stream GE-Proton tarballs straight to disk instead of buffering ~600 MB in RAM via .bytes(); add error_for_status() on all HTTP calls so rate limits and 404s surface clearly; avoid UTF-8 trap on tar args. - config: fail loudly when $HOME is unset instead of silently writing a Wine prefix under /tmp. - diagnose: replace stat+id shell-out with MetadataExt::uid(). - tray: grab handle() before spawn() consumes the service (the repo didn't compile against ksni 0.2 as shipped). - launcher/diagnose: escape the dot in "battle.net" pgrep patterns so the match doesn't false-positive on our own "battlenet-manager" binary; pipe pgrep/pkill stdio to /dev/null so PID lists don't leak into our output. - proton: handle empty release list in pick_interactively cleanly. - Add README, .gitignore, and commit Cargo.lock for reproducible builds. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
62 lines
2.5 KiB
Markdown
62 lines
2.5 KiB
Markdown
# battlenet-manager
|
|
|
|
A small system-tray daemon and CLI for running the Battle.net launcher on
|
|
Linux via [umu-launcher](https://github.com/Open-Wine-Components/umu-launcher)
|
|
and [GE-Proton](https://github.com/GloriousEggroll/proton-ge-custom).
|
|
|
|
## 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-proton` subcommand that downloads GE-Proton releases directly from
|
|
GitHub and installs them under the Steam compat tools directory.
|
|
- `diagnose` subcommand that sanity-checks the environment (umu-run, prefix,
|
|
Proton install, Vulkan, display server, stale agent.lock).
|
|
|
|
## Install
|
|
|
|
```sh
|
|
cargo build --release
|
|
install -Dm755 target/release/battlenet-manager ~/.local/bin/battlenet-manager
|
|
```
|
|
|
|
Requires `umu-launcher` and `tar` on PATH. On Arch:
|
|
|
|
```sh
|
|
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:
|
|
|
|
```toml
|
|
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.
|