All checks were successful
check / check (push) Successful in 1m12s
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.
106 lines
3 KiB
Markdown
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`.
|