No description
  • Rust 84.5%
  • C++ 14.8%
  • Shell 0.7%
Find a file
Breadway 73ec4f06f0
All checks were successful
dev release / build (push) Successful in 4m32s
check / check (push) Successful in 15m42s
Merge pull request 'ci: make the bread-ecosystem clone in ci/build.sh race-free' (#12) from fix/ci-clone-race into main
2026-09-29 17:46:27 +08:00
.forgejo/workflows ci: stop dev-release/check temp-dir cleanup from racing concurrent jobs 2026-09-28 22:26:24 +08:00
breadcast Remove em dashes from code and docs 2026-09-09 13:59:23 +08:00
breadcast-caststream-sys Remove em dashes from code and docs 2026-09-09 13:59:23 +08:00
breadcast-core Remove em dashes from code and docs 2026-09-09 13:59:23 +08:00
breadcastd Remove em dashes from code and docs 2026-09-09 13:59:23 +08:00
ci ci: make the bread-ecosystem clone in ci/build.sh race-free 2026-09-29 17:36:33 +08:00
contrib Remove em dashes from code and docs 2026-09-09 13:59:23 +08:00
graphify-out docs: describe the shipped bakery product and single-trunk releases 2026-08-15 21:38:38 +08:00
vendor/rust_cast-0.21.0 Fix Cast teardown leaks, keyframe latch, and DLNA session lifecycle 2026-08-16 14:16:23 +08:00
.gitignore ci: build dev track and PR checks against dependency main 2026-09-28 13:29:35 +08:00
AGENTS.md Remove em dashes from code and docs 2026-09-09 13:59:23 +08:00
bakery.toml Remove em dashes from code and docs 2026-09-09 13:59:23 +08:00
Cargo.lock Fix scoped link-local clobbering and the in-flight start-death race 2026-08-30 19:07:47 +08:00
Cargo.toml Implement Cast Streaming mirroring, DLNA casting, daemon+GUI, and breadd integration 2026-08-03 09:07:21 +08:00
CONTRIBUTING.md ci: build dev track and PR checks against dependency main 2026-09-28 13:29:35 +08:00
EVENTS.md Remove em dashes from code and docs 2026-09-09 13:59:23 +08:00
LICENSE Implement Cast Streaming mirroring, DLNA casting, daemon+GUI, and breadd integration 2026-08-03 09:07:21 +08:00
README.md Remove em dashes from code and docs 2026-09-09 13:59:23 +08:00

breadcast

Cast your screen to a Chromecast, Google TV, or DLNA renderer on the LAN. Two binaries:

  • breadcastd: background daemon. Discovers Cast (mDNS) and DLNA/UPnP (SSDP) devices, owns the portal screen-capture / encode pipeline, and runs the live session: Cast Streaming (vendored openscreen) or DLNA/AVTransport. One active session at a time.
  • breadcast: GTK4 Layer Shell popup. Thin IPC client of breadcastd: pick a device, start or stop a cast. Closing the popup does not interrupt an active session.

This is a bakery product. It is not shipped on the BOS ISO and is not part of the default desktop; install it yourself if you want it.

Install

bakery install breadcast

That puts breadcast and breadcastd on $PATH (usually ~/.local/bin), installs contrib/breadcastd.service as a systemd user unit, enables it, and starts the daemon. bakery doctor breadcast checks the system packages listed in bakery.toml first.

Requirements

  • A Wayland compositor with Layer Shell and xdg-desktop-portal ScreenCast (Hyprland is the primary target)
  • GTK 4.12+ and gtk4-layer-shell
  • GStreamer plus gst-plugin-pipewire, gst-plugins-bad, gst-plugin-va (vah264enc), and gst-plugin-hlssink3
  • jsoncpp and openssl (runtime deps of the vendored Cast Streaming code)

From source you also need a Rust toolchain (edition 2021).

Build from source

git clone https://git.breadway.dev/Breadway/breadcast
cd breadcast
cargo build --release

Binaries land at target/release/breadcast and target/release/breadcastd.

cp target/release/breadcast target/release/breadcastd ~/.local/bin/
cp contrib/breadcastd.service ~/.config/systemd/user/
systemctl --user daemon-reload
systemctl --user enable --now breadcastd

Usage

Start the daemon (or let the systemd unit handle it):

breadcastd

Open the device picker:

breadcast

Running breadcast again while it is open closes it (toggle). Click a device to start mirroring: the portal picker asks which screen to share. Stop mirroring ends the session. Status is Idle or Casting.

Discovery examples (optional, for debugging the LAN):

cargo run -p breadcast-core --example discover
cargo run -p breadcast-core --example dlna_discover

Hyprland keybind

On stock Hyprland, add the contents of contrib/hyprland.conf to your hyprland.conf if you want Super+C and the frosted-glass blur:

layerrule = blur, breadcast
layerrule = ignorezero, breadcast

bind = $mainMod, C, exec, breadcast

BOS does not ship this app or a default keybind for it. Add one yourself if you install breadcast on a BOS machine.

bread event integration

breadcastd works the same with or without breadd. When breadd is running, it publishes bread.cast.* and honors bread.command.cast.*. See EVENTS.md for the bus contract. bread is not a bakery dependency.

Theming

breadcast inherits its colour palette from bread-theme.