A lightweight Rust Stream Deck toolkit for Linux.
About
·
Download
·
Documentation
·
Developing
streamrs is a lightweight Stream Deck toolkit focused on a simple Linux-first workflow for configuring keys, icons, and actions on Stream Deck hardware.
It is built for and tested on:
- Elgato Stream Deck MK.2
- USB ID
0fd9:0080
Feature highlights:
- Static icons: PNG, JPEG/JPG, SVG
- Animated icons: GIF, APNG, animated WebP
- Built-in clock icon (
clock.svg) - Status-driven toggle icons via polling commands
- Automatic pagination when config has more than 15 keys
Install a release .deb (recommended on Debian/Ubuntu):
Release files are published on the GitHub Releases page:
sudo apt install ./streamrs_<version>_amd64.debQuick start after install:
- Plug in the Stream Deck
- Open the GUI:
streamrs-gui - Edit buttons and save
Service behavior:
- On install,
streamrs.serviceis enabled and started for active logged-in regular users - On package upgrade, the service is restarted for active logged-in regular users
- To enable it for an additional user later, log into that user and run:
systemctl --user enable --now streamrs.service- On each service start/restart,
streamrs --init --force-imagesruns first:- creates a config if missing
- refreshes bundled images from the package
- keeps your existing config unless you explicitly run
streamrs --init --force
Open the GUI configurator:
streamrs-guiManually start the daemon (if you do not want to use the service):
streamrsUseful service commands:
systemctl --user status streamrs.service
systemctl --user restart streamrs.service
systemctl --user stop streamrs.serviceDefault profile files live in:
- Config:
~/.config/streamrs/default.toml - Images:
~/.local/share/streamrs/default/
Additional profiles use:
~/.config/streamrs/<name>.toml~/.local/share/streamrs/<name>/
Notes:
- If the config is missing,
streamrsauto-initializes the profile from bundled defaults streamrs --init --forcerefreshes config and bundled images from package defaults
Common streamrs flags:
--profile <name>: use another profile--config <path>: use a custom config file--debug: inherit child process stdout/stderr--init: initialize profile files and exit--force: with--init, overwrite existing config/images
Generate a mock image from your current profile:
streamrs-preview --output mock.pngNotes:
- If
--outputis omitted, it writesmock.png - It reads your profile config/images first, then falls back to packaged defaults if needed
Create a Stream Deck icon from a logo (.svg or .png):
streamrs-icon-compose path/to/logo.svgDefaults:
- Output directory:
~/.local/share/streamrs/default/ - Output name:
<logo>-icon.png(auto-suffixed if needed)
Options:
--output <path>--padding <ratio>(0.0..0.5)
Developer-focused setup, source builds, packaging, maintainer notes, and contribution guidance are in development.md.

