Writing plugins
An overview for developers, with pointers to the official tutorial.
What a plugin is
A plugin is a Python package that StreamController loads at start-up. It registers one or more actions; an action is what you drag onto a key or dial. Actions get events (press, release, dial turns) and can draw on their key. Settings UI is built with GTK 4 widgets.
Getting started
- Run StreamController from source, with a separate data folder for development.
- Copy the official plugin template into the plugins folder.
- Start the app with
--skip-load-hardware-decksif you want to test on a fake deck. - Change the template's action, restart, and try it.
The official tutorial builds a counter plugin step by step: drawing an icon, reacting to presses and dial turns, adding a setting, localisation and a backend process for heavy libraries.
Getting into the store
Fill in the plugin's manifest and attribution files, then submit it to the store repository. Each listing points at a specific commit of your repository, so updates mean a new submission.
Where to read more
The official documentation has the full tutorial and API reference for PluginBase, ActionBase and BackendBase.