funman300 14eccf4ef0 Replace setup CLI stub with iced-based wizard
Lets the user paste an installer URL or local .exe path, downloads to
a temp file if needed, and runs the installer via umu-run with the
launcher's prefix, gameid, and proton path wired up. On completion,
checks for the expected exe and reports next steps.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-17 12:39:09 -07:00
2026-04-16 17:33:12 -07:00

umutray

A small system-tray daemon and CLI for running Windows game launchers on Linux via umu-launcher and GE-Proton.

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 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 — graphical wizard (iced) that downloads an installer URL or accepts a local .exe, then runs it via umu-run in the launcher's Wine prefix.

Install

cargo build --release
install -Dm755 target/release/umutray ~/.local/bin/umutray

Requires umu-launcher, tar, and vulkan-tools on PATH. On Arch:

sudo pacman -S umu-launcher vulkan-tools

Then enable autostart:

umutray service install

Usage

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> Open the graphical setup wizard 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. A full config looks like:

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. 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.

S
Description
No description provided
Readme MIT 1,001 KiB
Languages
Rust 99.1%
Shell 0.9%