av-launcher
One tray launcher for all my web-server apps

What it does
Several apps in this fleet are local web servers: srt-router, flock, RFutils and others. They all need the same small things: pick an interface, pick a port, start, stop, open the UI and sit in the system tray. This is that shell, written once.
The panel is my own card design, and it themes itself to match each app's web UI using the palette in the app's launcher.toml. It's built with Tauri v2, so it's a small native app rather than a bundled browser, and sitting in the tray costs a few megabytes rather than a whole Chromium.
- Network interface and port selection before the server starts
- Start, stop and open the web UI from the menu bar
- Themes itself per app from launcher.toml
- Tauri v2 — native, not a bundled browser
- Reused rather than reimplemented — srt-router, flock, RFutils, WebLinked, openrcs and oxbow all ship it
Where it stands
Released at v0.3.2 and used by several apps in the fleet. v0.3.2 stops a server with SIGTERM and only kills it if it's still running 3 s later. v0.3.0 added a serve mode, in which the launcher serves a static site itself, in-process, which is what gives every browser tool in the fleet a desktop app. It also stopped the server on every way out rather than only from the panel's own Quit (Cmd-Q and the Dock left it running and holding its port), and shipped one universal macOS installer instead of two per-arch ones. v0.3.1 makes a Start that fails say why (port in use, port refused, or a server that died) where it used to look like nothing happening. The Rust backend compiles and the panel UI has been exercised through its mock backend. The tray app has been run on real Windows, where Start once did nothing at all: Tauri's resource dir comes back as a verbatim \\?\ path, so no bundled binary resolved. v0.2.1 shipped that fix along with three more Windows defects, and Frame Ferret's build of this shell now reaches Running there with its embedded server answering. macOS hasn't been run end to end against a live server.