|
|
||
|---|---|---|
| .forgejo/workflows | ||
| breadcast | ||
| breadcast-caststream-sys | ||
| breadcast-core | ||
| breadcastd | ||
| contrib | ||
| graphify-out | ||
| vendor/rust_cast-0.21.0 | ||
| .gitignore | ||
| bakery.toml | ||
| Cargo.lock | ||
| Cargo.toml | ||
| CONTRIBUTING.md | ||
| EVENTS.md | ||
| LICENSE | ||
| README.md | ||
breadcast
Cast your screen to any Chromecast/Google TV, for Hyprland. It consists of two binaries:
breadcastd— a background daemon that discovers Cast devices on the LAN and (once built — see Status) owns the screen-capture/encode/serve pipeline and the live Cast V2 session.breadcast— a GTK4 Layer Shell popup for picking a device and starting/stopping a cast.
Status
This is early: device discovery (mDNS) and the Cast V2 sender (real device
control — connect, launch the receiver, load media) are built and validated
against real Chromecast/Google TV hardware. The actual screen-mirroring
pipeline (portal-based screen capture → GPU-accelerated encode → HLS →
local HTTP server) and the GTK4 device-picker UI are not built yet.
breadcastd today only does discovery and optional breadd event
publishing; breadcast is a stub binary. See CLAUDE.md's Status section
for more detail.
Requirements
- Rust toolchain (edition 2021)
- GTK 4.12+ and
gtk4-layer-shell(once the UI lands) - GStreamer +
gst-plugin-pipewire,gst-plugins-bad(VA-APIvaplugin),gst-plugin-hlssink3(once the capture pipeline lands) - Hyprland (or any Wayland compositor with Layer Shell and the
xdg-desktop-portalScreenCast interface)
Build
git clone https://git.breadway.dev/breadway/breadcast
cd breadcast
cargo build --release
The compiled binaries are at target/release/breadcast and
target/release/breadcastd.
Try device discovery today
cargo run -p breadcast-core --example discover
Prints Chromecast/Google TV devices as they appear/disappear on the LAN.
Install
Copy the binaries to somewhere on your $PATH, e.g.:
cp target/release/breadcast target/release/breadcastd ~/.local/bin/
systemd user service
A unit file is provided in contrib/:
cp contrib/breadcastd.service ~/.config/systemd/user/
systemctl --user daemon-reload
systemctl --user enable --now breadcastd
Hyprland keybind
For stock Hyprland, add the contents of contrib/hyprland.conf to your
hyprland.conf:
layerrule = blur, breadcast
layerrule = ignorezero, breadcast
bind = $mainMod, C, exec, breadcast
On BOS, Hyprland config is Lua+JSON-driven instead — see
contrib/binds.json for the equivalent keybind entry to merge into your
binds.json by hand (there's no per-app self-registration mechanism yet).
There is currently no BOS-native equivalent for the layerrule blur lines.
bread event integration
breadcastd optionally publishes into the shared bread automation fabric
(bread.cast.*) when breadd is running, and works identically without
it. See EVENTS.md for the full, honest-about-scope contract — most of the
eventually-planned events (mirroring start/stop) aren't implemented yet,
since the mirroring pipeline itself isn't built yet.
Theming
breadcast will inherit its colour palette from bread-theme, matching
the rest of the ecosystem, once its GTK4 UI is built.