feat: add tray streaming status and app icon

- tray icon and tooltip now reflect engine state: grey when stopped,
  green + live frame/drop counters in the tooltip while streaming
- generate a proper app icon (assets/, via cmd/teleportfling-icon) and
  embed it so the window and tray carry the icon without runtime files
- add a .desktop entry template for launching from an app menu
- run Fyne UI updates (status label, tray icon/tooltip) on the main
  thread via fyne.Do to satisfy the threading model
This commit is contained in:
2026-09-18 21:20:52 +01:00
parent 2b3fd54934
commit bb4073f8a3
8 changed files with 269 additions and 1 deletions
+23
View File
@@ -0,0 +1,23 @@
// Package assets embeds the TeleportFling application icon.
//
// The PNGs live in the repository assets/ directory and are generated by
// cmd/teleportfling-icon. Embedding keeps the icon with the binary so the GUI
// and tray never depend on a runtime file path.
package assets
import _ "embed"
// AppIcon256 is the 256px application icon.
//
//go:embed teleportfling-256.png
var AppIcon256 []byte
// AppIcon64 is the 64px icon used by the system tray.
//
//go:embed teleportfling-64.png
var AppIcon64 []byte
// AppIcon is the full-resolution (512px) application icon.
//
//go:embed teleportfling.png
var AppIcon []byte
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 431 B

+11
View File
@@ -0,0 +1,11 @@
[Desktop Entry]
Type=Application
Name=TeleportFling
GenericName=Screen and audio stream sender
Comment=Stream this screen and audio to an OBS Teleport receiver
Exec=teleportfling-gui
Icon=teleportfling
Terminal=false
Categories=AudioVideo;Video;Network;
StartupNotify=false
StartupWMClass=io.teleportfling
Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB