Developer-focused notes for building, running, and packaging streamrs from source.
For end-user install and usage docs, see Readme.md.
Issues and pull requests are welcome.
- Rust toolchain (
cargo,rustc) - GUI build dependencies (GTK4 + libadwaita dev packages)
- Debian/Ubuntu example:
libgtk-4-dev,libadwaita-1-dev
- Debian/Ubuntu example:
Debug build:
cargo buildRelease build (all binaries):
cargo build --release --locked --bin streamrs --bin streamrs-preview --bin streamrs-gui --bin streamrs-icon-composeRun the daemon:
cargo run --bin streamrsRun the GUI:
cargo run --bin streamrs-guiRender a preview image:
cargo run --bin streamrs-preview -- --output mock.pngPreview a specific profile:
cargo run --bin streamrs-preview -- --profile test --output mock.pngCompose an icon:
cargo run --bin streamrs-icon-compose -- path/to/logo.svgInstall from a checkout into your user environment:
make installThis installs:
- Binaries into
~/.local/bin/ - Default profile config into
~/.config/streamrs/default.toml - Default images into
~/.local/share/streamrs/icons/ - Runtime state into
~/.local/state/streamrs/state.toml - Desktop entry + icon
- User systemd service into
~/.config/systemd/user/streamrs.service
Generate the README mock image:
make mockAfter building release binaries (see above), create a .deb:
bash scripts/build-deb.sh <version> distOutput path:
dist/streamrs_<version>_<arch>.deb
- The package installs a user service unit:
streamrs.service - Packaging does not globally enable the user unit for all users
- Post-install/upgrade only enables/starts/restarts for active logged-in regular users
- The service unit runs
streamrs --init --force-imagesviaExecStartPre - End-user service behavior and manual enable commands are documented in Readme.md
- Default packaged config template:
config/default.toml - Packaged systemd user unit:
systemd/streamrs.service - Debian packaging script:
scripts/build-deb.sh
- Keyboard shortcut actions are configured with the
shortcutfield in profile TOML - On GNOME Wayland,
streamrsuses the RemoteDesktop portal for virtual keyboard injection - Portal restore tokens are stored in
XDG_STATE_HOME/streamrs/state.tomlso they are kept out of the editable profile config files - If you need to bypass the portal backend while debugging, run with
STREAMRS_DISABLE_PORTAL_KEYBOARD=1