Add cast-tv plugin - #401
Conversation
Casts the desktop to a Wi-Fi Direct (Miracast) smart TV via FluxCast — a bar icon and a Control Center shortcut, both opening a panel with a live TV scan, 720p/audio/bitrate options, and Cast/Stop.
The manifest declares no label_key/description_key, but the CI validator requires the file to exist unconditionally.
The plugin invokes the external |
Plugin
andresparrab/cast-tvplugin.toml)What it does
Casts the desktop to a Wi-Fi Direct (Miracast) smart TV via FluxCast — a bar icon and a Control Center shortcut, both opening the same panel: a live Wi-Fi Direct scan, a TV picker, 720p/audio/bitrate options, and Cast/Stop.
External dependencies
fluxcast— the plugin shells out to it directly for scanning (fluxcast --protocol wfd --wfd-scan) and casting; it's the only thing that talks to the network (via NetworkManager's Wi-Fi Direct discovery underneath), the plugin makes no network calls of its own.wf-recorder— forced as fluxcast's capture backend (--wfd-capture-backend wf-recorder) rather than its default portal negotiation, which can take ~15s on wlroots compositors, long enough that some TVs disconnect before the stream starts.pkill -f wfd-peer(a standard system utility, not a manifest dependency) is used to stop casting — matched by the--wfd-peerflag in the specificfluxcastprocess this plugin started, not any otherfluxcastinstance a user might have running.No filesystem writes beyond the plugin's own files.
Testing
Opened via both the bar icon and the Control Center shortcut, ran the live scan repeatedly (including against a real TV, confirming Cast/Stop both work end to end), toggled every option (720p, audio, bitrate).
noctalia plugins lintand the repo's ownvalidate-plugins.pyboth pass clean.Screenshots / Videos
Checklist
idafter the/inplugin.tomlexactly.plugin.toml,README.md,thumbnail.webp, andtranslations/en.json.README.mdfollows the README template, documents every entry id and dependency, and includes exact panel IPC commands and launcher prefixes where applicable.thumbnail.webpwith the thumbnail generator.versionfollows semver and is bumped in this PR;plugin_apiis the oldest API level this plugin requires.catalog.toml; CI generates it.Code review attestation
licensedeclared inplugin.toml.