modified: README.md
modified: src/config.rs modified: src/diagnose.rs modified: src/launcher.rs modified: src/main.rs new file: src/setup.rs modified: src/tray.rs
This commit is contained in:
@@ -1,18 +1,33 @@
|
||||
# umutray
|
||||
|
||||
A small system-tray daemon and CLI for running the Battle.net launcher on
|
||||
A small system-tray daemon and CLI for running Windows game launchers on
|
||||
Linux via [umu-launcher](https://github.com/Open-Wine-Components/umu-launcher)
|
||||
and [GE-Proton](https://github.com/GloriousEggroll/proton-ge-custom).
|
||||
|
||||
Ships with presets for six launchers out of the box:
|
||||
|
||||
- Battle.net
|
||||
- EA App
|
||||
- Epic Games
|
||||
- Ubisoft Connect
|
||||
- GOG Galaxy
|
||||
- Rockstar Games
|
||||
|
||||
Each lives in its own Wine prefix and shows up in the tray with per-launcher
|
||||
Launch / Kill entries. Users can add or remove launchers in `config edit`.
|
||||
|
||||
## 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).
|
||||
- Tray icon on any SNI-capable desktop (KDE, GNOME+AppIndicator, Xfce …).
|
||||
- Per-launcher running state reflected in the tray via a 2 s poller.
|
||||
- `update-proton` — streams GE-Proton releases straight to disk from GitHub
|
||||
(no ~600 MB in-memory buffering), with a progress indicator.
|
||||
- `diagnose` — sanity-checks umu-run, Vulkan, display server, per-launcher
|
||||
prefix / exe / ownership / running state.
|
||||
- `service` — installs a `systemd --user` unit so the tray autostarts with
|
||||
the graphical session.
|
||||
- `setup` — prints the manual setup steps for a launcher (a graphical
|
||||
wizard via iced is planned).
|
||||
|
||||
## Install
|
||||
|
||||
@@ -21,46 +36,62 @@ cargo build --release
|
||||
install -Dm755 target/release/umutray ~/.local/bin/umutray
|
||||
```
|
||||
|
||||
Requires `umu-launcher` and `tar` on PATH. On Arch:
|
||||
Requires `umu-launcher`, `tar`, and `vulkan-tools` 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.
|
||||
Then enable autostart:
|
||||
|
||||
```sh
|
||||
umutray service install
|
||||
```
|
||||
|
||||
## Usage
|
||||
|
||||
| Command | What it does |
|
||||
| ------------------------------ | -------------------------------------------------------- |
|
||||
| `umutray` | Start the tray daemon (default) |
|
||||
| `umutray launch` | Launch Battle.net and return (for `.desktop` shortcuts) |
|
||||
| `umutray kill` | SIGTERM → wait 3 s → SIGKILL on all Battle.net procs |
|
||||
| `umutray diagnose` | Run environment health checks |
|
||||
| `umutray 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 show` / `config path` | Print current config or its path |
|
||||
| `config edit` | Open config in `$EDITOR` |
|
||||
| `config set --prefix PATH` | Change the Wine prefix (also `--compat-dir`, `--gameid`) |
|
||||
| `service install` | Write + enable a `systemd --user` unit for autostart |
|
||||
| `service uninstall` / `status` | Remove the unit / show its status |
|
||||
| Command | What it does |
|
||||
| -------------------------------- | ------------------------------------------------------- |
|
||||
| `umutray` | Start the tray daemon (default) |
|
||||
| `umutray launchers` | List configured launchers and their state |
|
||||
| `umutray launch <name>` | Launch a specific launcher (e.g. `umutray launch epic`) |
|
||||
| `umutray kill [<name>]` | Kill one launcher, or all if no name is given |
|
||||
| `umutray diagnose [<name>]` | Health checks (one launcher or all) |
|
||||
| `umutray setup <name>` | Print setup steps for a launcher |
|
||||
| `umutray update-proton --latest` | Install newest GE-Proton release |
|
||||
| `umutray update-proton --list` | Show recent releases without installing |
|
||||
| `umutray update-proton` | Interactive version picker |
|
||||
| `umutray config show` / `path` | Print current config or its file path |
|
||||
| `umutray config edit` | Open config in `$EDITOR` |
|
||||
| `umutray config set …` | Update globals (`--proton-version`, `--compat-dir`) |
|
||||
| `umutray service install` | Write + enable a `systemd --user` unit |
|
||||
| `umutray service uninstall` | Stop, disable, and remove the unit |
|
||||
| `umutray service status` | `systemctl --user status umutray.service` |
|
||||
|
||||
## Config
|
||||
|
||||
Lives at `~/.config/umutray/config.toml`, written with defaults on
|
||||
first run:
|
||||
Lives at `~/.config/umutray/config.toml`. A full config looks like:
|
||||
|
||||
```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_compat_dir = "/home/you/.local/share/Steam/compatibilitytools.d"
|
||||
proton_version = "GE-Proton"
|
||||
|
||||
[[launchers]]
|
||||
name = "battlenet"
|
||||
display = "Battle.net"
|
||||
prefix_dir = "/home/you/Games/battlenet"
|
||||
exe_path = "Program Files (x86)/Battle.net/Battle.net Launcher.exe"
|
||||
gameid = "umu-battlenet"
|
||||
process_pattern = "Battle\\.net"
|
||||
|
||||
# …one [[launchers]] block per launcher
|
||||
```
|
||||
|
||||
`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.
|
||||
`proton_version = "GE-Proton"` tells umu-launcher to auto-fetch the latest.
|
||||
Setting it to a pinned tag (done automatically by `update-proton`) uses
|
||||
that specific version. Each launcher may override the global `proton_version`
|
||||
with its own.
|
||||
|
||||
## License
|
||||
|
||||
MIT. See [LICENSE](LICENSE).
|
||||
|
||||
Reference in New Issue
Block a user