feat: add Fyne desktop GUI with system tray (M3)

- internal/gui: settings form (name, port, source, quality, fps, audio)
  wired to the flinger engine, config save/load, start/stop toggle
- system tray via Fyne's StatusNotifierItem: Show (raises window),
  Start/Stop, Quit; left-click shows the settings window
- cmd/teleportfling-gui entry point

Verified on Hyprland: tray icon registers, start/stop streaming works,
window shows and focuses from the tray.
This commit is contained in:
2026-09-18 20:32:49 +01:00
parent ba423eb944
commit cb27a0d63d
2 changed files with 268 additions and 0 deletions
+14
View File
@@ -0,0 +1,14 @@
// Command teleportfling-gui is the desktop front-end for TeleportFling: a
// Fyne settings window plus a system tray to start/stop streaming.
//
// The streaming engine lives in internal/flinger; this command only wires the
// GUI and tray around it. Headless use is handled by cmd/teleportfling.
package main
import (
"teleportfling/internal/gui"
)
func main() {
gui.Run()
}