Desktop App (Tauri)
Wavry Desktop provides a native application surface for host/client workflows, built with Tauri and Svelte.
Stack
- Rust backend:
crates/wavry-desktop/src-tauri - Frontend: Svelte + TypeScript
- Runtime: Tauri
Local Development
cd crates/wavry-desktop
bun install
bun run tauri dev
Recommended additional validation:
bun run check
What the Desktop App Controls
The desktop UI drives runtime config for:
- Connectivity mode (cloud/direct/custom)
- Session start/stop behavior
- Resolution and display target
- Input settings (including gamepad controls)
- Session status and runtime feedback
Packaging
cd crates/wavry-desktop
bun run tauri build
Typical outputs by platform:
- Windows: executable/installer
- Linux: distro-appropriate bundles
macOS release distribution uses the native Swift desktop app (wavry-desktop-native-macos-*.dmg) rather than Tauri packaging.
Linux Runtime Behavior (Wayland and X11)
Wavry desktop treats Linux as a first-class runtime target.
- On Wayland sessions, Wavry enforces native runtime backends (
GDK_BACKEND=wayland,WINIT_UNIX_BACKEND=wayland) and conservative WebKit flags for stability. - On X11 sessions, Wavry uses the X11 desktop path.
- Host display capture on Wayland uses the portal + PipeWire flow.
- Linux host startup runs preflight checks (capture backend, encoder availability) and aligns encode resolution to the chosen monitor.
- The host card surfaces Linux runtime diagnostics and first-action recommendations directly in the UI.
For full setup and compatibility detail, see Linux and Wayland Support.
Production Validation Checklist
- Launch packaged app on a clean environment.
- Verify app startup without local dev servers.
- Verify session start/stop behavior and persistence.
- Verify upgrade path from previous app builds.
Troubleshooting Quick Notes
If packaged app loads a localhost error, confirm:
- Production build points to
frontendDist devUrlis used only during dev mode- Tauri feature flags/config match Cargo configuration