mirror of
http://100.103.83.12:3003/fegger/screen_cast.git
synced 2026-09-17 09:42:44 +00:00
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:
@@ -0,0 +1,15 @@
|
||||
# GTK4 sender panel, behind the `gui` option (default: false). The core
|
||||
# CLI and tests never need GTK.
|
||||
|
||||
dep_gtkmm = dependency('gtkmm-4.0')
|
||||
|
||||
screencast_gui_sources = files(
|
||||
'gui.cpp',
|
||||
)
|
||||
|
||||
executable('screencast-gui',
|
||||
screencast_gui_sources,
|
||||
include_directories : [sc_core_inc, include_directories('../app')],
|
||||
dependencies : [dep_gtkmm, sc_app_core_dep, sc_capture_dep, sc_codec_dep, sc_network_dep,
|
||||
sc_render_dep],
|
||||
install : true)
|
||||
Reference in New Issue
Block a user