feat(gui): add a GTK sender panel and a waybar widget
A gtkmm-4.0 control panel (behind -Dgui=true, default off): refresh shows discovered receivers (grouped and preference-sorted), a bitrate scale, and start/stop that runs the whole session on a worker thread so the interactive portal picker never blocks the UI. The CLI and the GUI now share the new sc_app_core static library holding the pipelines, session orchestration (negotiation + PLI feedback), and a state store. The sender pipeline publishes its state to $XDG_RUNTIME_DIR/screencast/sender.json (session id, receiver, bitrate, pid, start time; stale files detected by pid liveness) and persists the last session for one-click restarts. The new 'screencast waybar' subcommand prints a waybar module line and its --toggle flag stops a running sender gracefully or spawns a detached restart of the last receiver. Waybar on the dev machine is wired: custom/screencast module with click-to-toggle and right-click panel, plus styles, with a timestamped backup of both config files. Both binaries are installed to /usr/local/bin. Validated: waybar output (idle and streaming states with a synthetic state file), GUI launches on the desktop (window observed via hyprctl), meson test 5/5 in both build configurations, formatting clean.
This commit is contained in:
+11
-1
@@ -65,7 +65,17 @@ loopback; current phase is Phase 7.
|
||||
before the fix). Cross-compiling on the dev machine was considered and
|
||||
dropped — the on-Pi build works and the toolchain/container effort was
|
||||
not needed.
|
||||
- **Pi Wi-Fi hotspot** (`scripts/pi-hotspot.sh on|off|status`): NetworkManager
|
||||
- **GTK panel + waybar widget**: `screencast-gui` (gtkmm-4.0, behind
|
||||
`-Dgui=true`; app internals now live in the `sc_app_core` static lib so
|
||||
CLI and GUI share pipelines/session/state). `screencast waybar [--toggle]`
|
||||
prints the waybar module line and toggles streaming via SIGTERM (stop) or
|
||||
a detached re-exec spawn from `last-session.json` (start). State lives in
|
||||
`$XDG_RUNTIME_DIR/screencast/sender.json` (written by the pipeline with
|
||||
session id, receiver, bitrate, pid, start time; stale files are detected
|
||||
by pid-liveness). The waybar config was wired into the user's bar
|
||||
(`custom/screencast` before `custom/timetrack`, with backup) and the
|
||||
binaries installed to /usr/local/bin.
|
||||
- **Pi Wi-Fi hotspot** (`scripts/pi-hotspot.sh on|off|status`): NetworkManager
|
||||
AP mode (WPA2, ipv4 shared → built-in DHCP/NAT, Pi at 10.42.0.1). Takes
|
||||
over wlan0 while active; generated PSK stored in /etc/screencast-hotspot.conf.
|
||||
No application changes needed — the receiver already announces on all
|
||||
|
||||
Reference in New Issue
Block a user