Profile Examples And Linux Target Matching
Use this guide when you want practical JSON samples for the current Ioruba profile editor.
🎚️ Example: master volume only
{
"id": "master-only",
"name": "Master Only",
"serial": {
"preferredPort": null,
"baudRate": 9600,
"autoConnect": true,
"heartbeatTimeoutMs": 3000
},
"sliders": [
{
"id": 0,
"name": "Master Volume",
"targets": [{ "kind": "master" }]
}
],
"audio": {
"noiseReduction": "default",
"smoothTransitions": true,
"transitionDurationMs": 50
},
"ui": {
"language": "pt-BR",
"theme": "system",
"showVisualizers": true,
"telemetryWindow": 120
}
}
🧩 Example: applications + microphone + output sink
{
"id": "streaming-desk",
"name": "Streaming Desk",
"serial": {
"preferredPort": "/dev/ttyUSB0",
"baudRate": 9600,
"autoConnect": true,
"heartbeatTimeoutMs": 3000
},
"sliders": [
{
"id": 0,
"name": "Apps",
"targets": [
{ "kind": "application", "name": "Spotify" },
{ "kind": "application", "name": "Firefox" },
{ "kind": "application", "name": "Discord" }
]
},
{
"id": 1,
"name": "Mic",
"targets": [{ "kind": "source", "name": "default_microphone" }]
},
{
"id": 2,
"name": "Speakers",
"targets": [{ "kind": "sink", "name": "default_output" }]
}
],
"audio": {
"noiseReduction": "default",
"smoothTransitions": true,
"transitionDurationMs": 50
},
"ui": {
"language": "pt-BR",
"theme": "system",
"showVisualizers": true,
"telemetryWindow": 120
}
}
🔎 Linux matching rules
The current Linux backend applies targets with the following logic:
master
- maps to
pactl set-sink-volume @DEFAULT_SINK@ ...
application
- matches against both the Pulse/PipeWire application name and the display name
- matching is case-insensitive
- partial matches are accepted
- if no active sink input matches, the result is reported as
app idle: ...
source
default_microphonefirst tries the current default source- if no default source is available, it falls back to the first non-monitor source
- custom names are matched case-insensitively against source name and description
sink
default_outputuses the current default sink- custom names are matched case-insensitively against sink name and description
💡 Practical tips
- prefer stable application names such as
Spotify,Firefox, orDiscord - refresh the inventory in the desktop app before debugging a matching problem
- keep at least one active audio stream open if you want
applicationtargets to be discoverable - use
default_microphoneanddefault_outputwhen you want the profile to survive device changes better