Skip to content

Instantly share code, notes, and snippets.

@halli2
halli2 / toggle_speakers_headphones.sh
Created April 15, 2026 11:42
Toggle between audio outputs using WirePlumber.
#!/usr/bin/env sh
set -euo pipefail
dump=$(pw-dump -N)
nodes=$(echo "$dump" | jq -r '.[] | select(.type == "PipeWire:Interface:Node") | select(.info.props."media.class" == "Audio/Sink")')
scarlett_id=$(echo $nodes | jq -r 'select(.info.props."alsa.card_name" == "Scarlett 2i2 USB") | .id')
scarlett_name=$(echo $nodes | jq -r 'select(.info.props."alsa.card_name" == "Scarlett 2i2 USB") | .info.props."node.name"')
builtin_id=$(echo $nodes | jq -r 'select(.info.props."alsa.card_name" == "HD-Audio Generic") | .id')