A StreamController plugin that toggles a PipeWeaver output target between two physical devices and shows the active target with a dynamic icon.
This plugin adds a button action for StreamController that:
- switches a PipeWeaver target such as
Master Channel - toggles between two physical output devices, e.g. speakers and headphones
- shows a speaker or headphone icon depending on the currently attached device
- falls back to an unknown icon when the active device cannot be identified
This plugin uses the PipeWeaver HTTP API directly:
GET /api/get-devicesPOST /api/command
That makes it more robust on setups where the pipeweaver-client CLI status/edit path is broken or out of sync with the daemon JSON schema.
- StreamController
1.5.0-beta.12or newer - PipeWeaver daemon running locally
- PipeWeaver web/API endpoint reachable on:
http://127.0.0.1:14565- or
http://localhost:14565
Copy this repository's plugin directory to your StreamController plugins directory:
cp -a ./ ~/.var/app/com.core447.StreamController/data/plugins/com_hubelix_PipeWeaverTargetStatusThen restart StreamController.
Download the latest ZIP from the Releases page and extract it into:
~/.var/app/com.core447.StreamController/data/plugins/com_hubelix_PipeWeaverTargetStatus/
Then restart StreamController.
Open the action config panel by clicking on the action in StreamController. All three fields are live dropdowns populated from the PipeWeaver API:
| Field | Description |
|---|---|
| PipeWeaver target name | The managed master target, e.g. Master Channel |
| Speaker device | The physical output device to use as speaker |
| Headphone device | The physical output device to use as headphones |
The dropdowns are populated automatically when PipeWeaver is running. If PipeWeaver is unreachable when the config is opened, free-text entry fields are shown instead.
The first available option is saved automatically on first open — you can change it afterwards at any time.
Matching is tolerant: exact node names and description substrings both work.
On press, the plugin:
- reads the current PipeWeaver device state from
/api/get-devices - resolves the configured master target
- resolves speaker and headphone targets from the available physical targets
- removes existing attached physical devices from the master target
- attaches the selected next target via
/api/command
The button displays the speaker or headphone icon depending on the active target. No text labels are shown.
- The plugin is focused on a simple 2-target toggle workflow.
- It avoids hard dependency on fixed PipeWire node IDs.
- It is currently tailored for local PipeWeaver access, not remote API access.
Possible future improvements:
- better multi-output handling
- configurable icons
Useful files in this repository:
actions/TargetToggleAction/TargetToggleAction.py— main plugin logicmanifest.json— plugin metadatamain.py— StreamController plugin registrationCHANGELOG.md— release history
MIT