Stream Deck GuideFree apps for Windows & Linux Install

Command line

Script your deck from a shell, a hotkey daemon or anything that can run a command.

Basics

All commands go through the same entry point as the app. Run them from the stream-deck folder:

Terminal
$ .venv/bin/python main.py --help
$ .venv/bin/python main.py --list-devices --json

Keys are addressed by coordinates x,y, starting at 0,0 in the top-left. Decks are addressed by serial number, which --list-devices prints. Every get flag has a matching set.

Examples

Examples
# show the Gaming page on one deck
$ .venv/bin/python main.py --change-page CL123456789 "Gaming"
# press the top-left key on the Main page
$ .venv/bin/python main.py --emulate-input press CL123456789 Main 0,0
# dim the deck at night
$ .venv/bin/python main.py --set-brightness CL123456789 20
# relabel a key without opening the app
$ .venv/bin/python main.py --set-label "Gaming" 0,0 0 center text "Play"

All flags

Running

FlagWhat it does
-bStart in the background without opening the window.
--daemon-onlyRun without creating the main window until reopened.
--close-runningClose a running instance.
--data PATHUse a different data folder.
--skip-load-hardware-decksDon't use connected hardware. Useful for plugin development.
--develDeveloper mode; disables auto update.

Reading state

FlagWhat it does
--list-devicesConnected decks with their serial numbers.
--list-pagesAll pages.
--list-actions PAGE COORDS STATEActions on one key.
--jsonMachine-readable output for list and get commands.

Controlling a running app

FlagWhat it does
--change-page SERIAL PAGEShow a page on a deck.
--change-state SERIAL PAGE COORDS STATESwitch a key to another state.
--emulate-input EVENT SERIAL PAGE COORDSAct as if a key was pressed. EVENT is press or long-press.
--get-brightness SERIALCurrent brightness, 0 to 100.
--set-brightness SERIAL VALUESet brightness, 0 to 100.
--sleep SERIALShow the screensaver now.
--wake SERIALWake from sleep.

Editing pages (works with the app closed)

FlagWhat it does
--create-page NAMENew empty page.
--delete-page NAMEDelete a page.
--rename-page NAME NEW_NAMERename.
--duplicate-page NAME NEW_NAMECopy a page.
--export-page NAME DESTExport one page with its assets to a .scpage file.
--export-all DESTExport every page to a .zip.
--add-state PAGE COORDSAdd a state to a key.
--remove-state PAGE COORDS STATERemove a state.
--set-label PAGE COORDS STATE POSITION PROPERTY VALUESet label text, font, size, colour, outline or alignment.
--set-background-color PAGE COORDS STATE COLORColour as R,G,B or R,G,B,A.
--set-icon PAGE COORDS STATE PATHImage, GIF or video file for the key.
--set-icon-layout PAGE COORDS STATE PROPERTY VALUESize, alignment or fill mode of the icon.

D-Bus

The same functions are on the session bus at com.core447.StreamController, for tools that would rather not spawn a process each time.

Questions

Can I control my Stream Deck from a script on Linux?

Yes. StreamController's command line can change pages, press keys, set brightness and edit pages, with JSON output for scripts. It's also available over D-Bus.