Stoatworks Labs

av-launcher

One tray launcher for all my web-server apps

Releasedv0.3.2ApplicationRust
av-launcher — One tray launcher for all my web-server apps
The launcher panel wearing RFutils' theme: the local server stopped, the address it will serve, the interface and port it binds, and Start, Open, Hide and Quit. The same shell serves every tool in the fleet — the repo shows it in three themes.

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.