A Linux daemon for Elgato Stream Deck devices. Control your Stream Deck with custom buttons, macros, and per-application configurations.
streamdeckd runs in the background and manages your Elgato Stream Deck devices on Linux. It lets you:
- Create custom button layouts with icons and actions
- Switch between pages for unlimited buttons
- Set per-application profiles - buttons change based on what app you're using
- Control multiple Stream Decks at once
- Extend with plugins for advanced functionality
-
Set up device permissions:
# Copy udev rules sudo curl -o /etc/udev/rules.d/50-elgato.rules \ https://raw.githubusercontent.com/unix-streamdeck/streamdeckd/master/50-elgato.rules # Reload rules sudo udevadm control --reload-rules
-
Build and run:
go build ./streamdeckd
-
Configure your buttons by editing
$XDG_CONFIG_HOME/.streamdeck-config.json
Each button can perform different actions:
- Command - Run any shell command
- Keybind - Simulate keyboard shortcuts
- URL - Open websites
- Page Switch - Navigate between button layouts
- Brightness - Adjust Stream Deck brightness
- Key Hold - Simulate holding down a key
- Custom Plugin Actions - Any action you could want
{
"decks": [{
"serial": "AB12C3D45678",
"pages": [[
{
"application": {
"": {
"command": "notify-send 'Hello!'",
"icon": "~/icons/hello.png"
}
}
}
]]
}]
}For a graphical interface, use streamdeckui-wails.
- Installation Guide - Detailed setup instructions
- Configuration Guide - Complete configuration reference
- D-Bus API - Programmatic control via D-Bus
- Custom Modules - Creating plugins and extensions
- Report issues: GitHub Issues
- Example plugins: example-plugins repository
See LICENSE for details.