一个二进制两种用法:两个 GUI 的 main.rs 在进 UI 之前分发子命令,命中就把控制权交给 unlucky_cli::run —— 不建窗口、不探后端、不扫字体、不 dlopen 图形库。 分发判据只有一条,子命令表不重复:crates/cli 的解析器是唯一真相源。 - 首个 token 是裸词 → 子命令位置,交 CLI(未知子命令由 CLI 报错 + 提示 --help,退出 1, 不静默开窗) - 首个 token 是 flag → 只有 CLI 解析出真命令才算 CLI 调用;--data-dir X 解析成 Welcome、 --screenshot / --renderer / --diff 等 GUI 参数解析失败,一律仍走 GUI(CI 脚本零改动) 顺带:unlucky-launcher --version 以前会直接开窗,现在走 CLI 分发报版本。 packaging:ull 作为独立裸资产随每个槽位发布(make_artifacts.py + release.yml 的 assets 数组与 SHA256SUMS glob),矩阵完整性检查改成 GUI/CLI 各查一次。 app-iced 的 x11 / wayland / linux-theme-detection 收进 target 专属的 cfg(target_os) 段。 门禁实跑:cargo fmt --all --check 通过;cargo clippy --workspace --all-targets -D warnings 通过(exit 0);cargo test --workspace 通过(51 个测试二进制 / 1369 个用例,含本次新增的 5 + 5 条分发判据用例)。
5.2 KiB
Unlucky Launcher {{VERSION}}
Rust-native single-file Minecraft launcher: Slint + Metro UI, built-in AI agent (chat / config edits / crash diagnosis) and an MCP server other agent tools can attach to. No WebView, no bundled runtime, no JRE download needed to start the launcher itself.
Downloads
| Platform | Asset | Notes |
|---|---|---|
| Windows 10/11 x64 | unlucky-launcher-{{VERSION}}-windows-x64.exe |
single exe, double-click to run |
| Windows 11 ARM64 | unlucky-launcher-{{VERSION}}-windows-arm64.exe |
single exe, runs natively on ARM64 Windows |
| Linux x64 (X11/Wayland) | unlucky-launcher-{{VERSION}}-linux-x64.tar.gz |
single binary inside, no installer |
| Linux arm64 (X11/Wayland) | unlucky-launcher-{{VERSION}}-linux-arm64.tar.gz |
single binary inside; needs glibc 2.35+ |
| macOS 12+ Apple Silicon | unlucky-launcher-{{VERSION}}-macos-arm64.tar.gz |
single binary inside, no installer |
| macOS 12+ Intel | unlucky-launcher-{{VERSION}}-macos-x64.tar.gz |
single binary inside, no installer |
LICENSE, NOTICE and README.md ship in every archive; on Windows they are attached to
this release next to the .exe (a lone exe cannot carry them), so the license terms travel
with the download on every platform.
Every slot also ships the command line as its own small asset — ull-{{VERSION}}-<slot>
(.exe on Windows):
./ull-{{VERSION}}-linux-x64 instances list # servers / CI / Termux: no graphics stack needed
unlucky-launcher instances list # desktops: the GUI binary answers the same commands
ull runs instances, install, launch, accounts, sessions, logs, diag, config,
java and agent, and links no graphics library at all. The GUI binary accepts the same set
before it ever opens a window, so on a machine with a desktop you do not need ull.
Support matrix
| Platform | Level | Runtime requirements |
|---|---|---|
| Windows 10/11 x64 | first class | nothing beyond the OS (UCRT is part of Win10+) |
| Windows 11 ARM64 | first class (launcher artifact) | nothing extra; launcher runs natively, the game itself runs through the OS x64 emulation layer with an x64 JDK |
| macOS 12+ (arm64 / x64) | first class | nothing; unsigned build, see Gatekeeper note |
| Linux x64, X11 | first class | libxkbcommon, fontconfig, libGL (or software renderer), libxcb |
| Linux x64, Wayland | supported | wayland-client, libxkbcommon, plus the X11 set for XWayland apps |
| Linux arm64, X11 | first class | glibc 2.35+ (built on ubuntu-22.04-arm, same floor as x64), libxkbcommon, fontconfig, libGL, libxcb |
| Linux arm64, Wayland | supported | the above plus wayland-client |
| Windows 8.1/8/7 | unsupported | baseline was raised to Win10 (decision D21) |
| Android — Termux + X11 | experimental, not promised | CLI only (the ull asset, or build from source), GUI unverified; not part of this release matrix |
Both arm64 rows are formally released slots (the assets ship in this release and in
SHA256SUMS.txt), not the experimental Termux path: Linux arm64 is built and smoke-tested on a
native ARM64 runner, Windows ARM64 is cross-built with the same static-CRT gate as x64.
Install
Windows — put the .exe anywhere and run it (pick -windows-arm64.exe on ARM64 Windows,
-windows-x64.exe everywhere else). Portable data lives next to the exe when a
portable.marker file is present, otherwise under %APPDATA%.
Linux
tar -xzf unlucky-launcher-{{VERSION}}-linux-x64.tar.gz # use linux-arm64 on aarch64
cd unlucky-launcher-{{VERSION}}-linux-x64 # ditto
chmod +x unlucky-launcher && ./unlucky-launcher
macOS
tar -xzf unlucky-launcher-{{VERSION}}-macos-arm64.tar.gz
cd unlucky-launcher-{{VERSION}}-macos-arm64
xattr -d com.apple.quarantine unlucky-launcher # unsigned build, Gatekeeper quarantine
chmod +x unlucky-launcher && ./unlucky-launcher
No GPU? Software renderer
The UI prefers OpenGL (femtovg) and falls back to Slint's CPU renderer when no usable GL driver is present. Force it on any machine with:
unlucky-launcher --software-renderer # or: SLINT_BACKEND=winit-software unlucky-launcher
Verify the download
# Linux / macOS
sha256sum -c SHA256SUMS.txt --ignore-missing
# Windows (PowerShell)
Get-FileHash .\unlucky-launcher-{{VERSION}}-windows-x64.exe -Algorithm SHA256
Checksums
{{SUMS}}
Known limitations of this build
- Microsoft (MSA) account login depends on a Mojang app-id whitelist that is still pending; until it is granted, use offline accounts or authlib-injector (the 403 is reported with a readable diagnostic instead of a silent failure).
- Binaries are not code-signed / notarized yet: Windows SmartScreen and macOS Gatekeeper warn on first launch. Checksums above are the integrity reference for now.
- macOS ships the bare binary (single-file promise), not a
.appbundle: no Dock icon or Finder double-click — launch it from a terminal.
License
Apache-2.0. Third-party notices (including Slint's Royalty-Free 2.0 track) are in NOTICE.
Unlucky Launcher is not affiliated with Mojang or Microsoft; it does not ship game files.
Made with Slint — Slint Royalty-Free 2.0 track, unmodified.