#!/usr/bin/env bash # Toggle default PipeWire sink between Steinberg UR22mkII and Starship/Matisse # sinks #STEINBERG_ID=60 #STARSHIP_ID=59 SINKS=$(wpctl status | sed -n '/Sinks:/,/Sources:/p') # Extract IDs (ignore default *) and match specific names STARSHIP_ID=$(echo "$SINKS" | tr -d '*' | grep -i "Starship" | grep -v "Easy Effects" | awk '{print $2}' | tr -d '.') STEINBERG_ID=$(echo "$SINKS" | tr -d '*' | grep -i "Steinberg" | grep -v "Easy Effects" | awk '{print $2}' | tr -d '.') # Get current default sink name (not just the ID) CURRENT_SINK=$(wpctl status | awk '/Audio\/Sink/ {print $3}') # Detect which sink is active and toggle if [[ "$CURRENT_SINK" == *"Steinberg"* ]]; then echo "Switching to Starship/Matisse output..." wpctl set-default "$STARSHIP_ID" else echo "Switching to Steinberg UR22mkII output..." wpctl set-default "$STEINBERG_ID" fi # Optionally move active streams echo "Moving active streams to new sink..." for stream in $(wpctl status | awk '/\. Stream/{print $1}'); do wpctl move-stream "$stream" @DEFAULT_AUDIO_SINK@ 2>/dev/null done # Confirm new default echo "New default sink:" wpctl status | grep "Audio/Sink"