# EZPPLauncher **EZPPLauncher** is a custom launcher for the private osu! server [EZPPFarm](https://ez-pp.farm), built with **Rust** and **Svelte** using the [Tauri](https://tauri.app) framework. It enhances the osu! experience with quality-of-life features and integration specifically designed for the EZPPFarm community. --- ## 🖼️ Preview ![EZPPLauncher Preview](./assets/EZPPLauncher-preview.png) --- ## 🚀 Features - [x] Automatically updates osu! before launching - [x] Automatically start/stop the OpenTabletDriver Daemon (Windows) - [x] Automatic ingame login - [x] Patches the osu! client to show misses in Relax and Autopilot (Windows, Linux and macOS via Wine) - [x] Displays your EZPPFarm stats in the launcher - [x] Shows the number of imported beatmapsets - [x] Shows the number of imported skins - [x] Displays ping to the EZPPFarm server - [x] Discord Rich Presence - [x] Performance Display Overlay (currently in experimental patcher release stream) - [x] Launcher Theming (API 1.0 bundles and API 2.0 declarative themes) - [x] Advanced theme editor in its own window with freeform text/image/video/shape layers, multi-select and snapping, layer locks, draft recovery, validation and export - [x] Theme update backups with one-click rollback, plus a trust prompt before running executable API 1.0 themes - [x] In-app diagnostics for osu!, Wine, the patcher, and the experimental stream's .NET 8 runtime, plus a log-bundle viewer --- ## 💻 Supported Platforms | Platform | Status | | -------- | ------------------------------------------------------ | | Windows | ✅ Supported | | macOS | 🕧 Partially supported (via Wineskin/Whisky/CrossOver) | | Linux | 🕧 Partially supported (via osu-winello) | > **Windows** remains the fully supported platform. OpenTabletDriver is Windows-only. On macOS, > in-game patching runs the Windows patcher through the same Wine prefix as osu!. The stable > patcher stream needs no extra runtime; the experimental stream needs the .NET 8 Desktop Runtime > installed in that prefix. ### macOS osu! stable is a Windows build, so on macOS it runs inside a Wine wrapper. EZPPLauncher supports Wineskin wrappers (the usual `osu!.app` wine skin), Whisky bottles and CrossOver bottles. The setup wizard automatically looks for Wineskins in `/Applications` and `~/Applications`. If detection fails, choose **Browse** and pick the `osu!.app` wrapper itself (or a Wine prefix folder); the launcher resolves the osu! installation inside it, so there is no need to open the bundle's package contents. Large VP8/VP9/AV1 theme videos are transcoded once to a cached 720p H.264/AAC file so WebKit can use the Mac's hardware decoder. The first large video triggers a one-time (~63 MB) download of a signed static FFmpeg 9.0.2 build from `ffmpeg.martin-riedl.de` into `~/.ezpplauncher/bin`; the launcher verifies its pinned SHA-256 and makes it executable. The managed build requires macOS 12 or newer. If the download fails, a system FFmpeg (Homebrew or MacPorts) is used; without either, themes still load but large WebM videos remain on WebKit's software decoder and may stutter. Theme authors can also ship an H.264/MP4 version alongside the WebM. --- ## 🪵 Logs Launcher, osu! and patcher output is written to `.ezpplauncher/logs` in your home folder: | File | Contents | | -------------- | -------------------------------------------------------------- | | `launcher.log` | Launcher lifecycle, webview console output and uncaught errors | | `osu.log` | osu! and osu! updater output, including stdout/stderr | | `patcher.log` | Patcher output, including stdout/stderr | A file is only created when that stream actually writes a line. On each new session, or when any file reaches 5 MiB, all three active files are bundled into a single `logs__