added audio scripts used in my river configuration
This commit is contained in:
33
.local/bin/toggle_audio
Executable file
33
.local/bin/toggle_audio
Executable file
@@ -0,0 +1,33 @@
|
|||||||
|
#!/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"
|
||||||
25
.local/bin/waybar_audio.sh
Executable file
25
.local/bin/waybar_audio.sh
Executable file
@@ -0,0 +1,25 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# Get default sink name and volume
|
||||||
|
sink_info=$(pamixer --get-default-sink)
|
||||||
|
sink_name=$(echo "$sink_info" | awk '{print $3}')
|
||||||
|
volume=$(pamixer --get-volume)
|
||||||
|
muted=$(pamixer --get-mute)
|
||||||
|
|
||||||
|
# Determine alt value for Waybar
|
||||||
|
if [ "$muted" = "true" ]; then
|
||||||
|
case "$sink_name" in
|
||||||
|
*Steinberg*) alt="headphones-muted" ;;
|
||||||
|
*) alt="speaker-muted" ;;
|
||||||
|
esac
|
||||||
|
else
|
||||||
|
case "$sink_name" in
|
||||||
|
*Steinberg*) alt="headphones" ;;
|
||||||
|
*) alt="speaker" ;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Output JSON for Waybar
|
||||||
|
printf '{"text": "%s%%", "alt": "%s", "class": "%s", "percentage": %s }\n' \
|
||||||
|
"$volume" "$alt" "$alt" "$volume"
|
||||||
|
|
||||||
Reference in New Issue
Block a user