breadcast/README.md
Breadway d1dd98a889
All checks were successful
check / check (push) Successful in 1m12s
docs: describe the shipped bakery product and single-trunk releases
README still called the GTK picker and mirroring pipeline stubs. Both
are built: breadcastd discovers Cast and DLNA devices and owns the
session; breadcast is the GTK picker. Install is bakery; this is not
on the BOS ISO.

CONTRIBUTING now follows the ecosystem single-trunk main + RC-tag
model. Leftover dev/beta CI workflows are documented, not rewritten.
bread-theme and bread-utils already pin bread-ecosystem v0.7.1.
2026-08-15 21:38:38 +08:00

106 lines
3 KiB
Markdown

# 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
```sh
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
```sh
git clone https://git.breadway.dev/Breadway/breadcast
cd breadcast
cargo build --release
```
Binaries land at `target/release/breadcast` and `target/release/breadcastd`.
```sh
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):
```sh
breadcastd
```
Open the device picker:
```sh
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):
```sh
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](EVENTS.md) for the bus contract. `bread` is not a bakery
dependency.
## Theming
`breadcast` inherits its colour palette from `bread-theme`.