33 lines
785 B
Bash
Executable File
33 lines
785 B
Bash
Executable File
#!/bin/bash
|
|
|
|
SINKS=$(pactl list short sinks | awk '{print $2}')
|
|
|
|
declare -A sink_map
|
|
|
|
options=""
|
|
first=true
|
|
while read -r sink; do
|
|
device=$(echo "$sink")
|
|
device_name=$(pactl list sinks | grep -A 20 "$device" | grep "Description:" | awk -F: '{print $2}' | xargs)
|
|
|
|
if [ "$first" = true ]; then
|
|
options+="$device_name"
|
|
first=false
|
|
else
|
|
options+="\n$device_name"
|
|
fi
|
|
sink_map["$device_name"]="$device"
|
|
done <<< "$SINKS"
|
|
|
|
CHOSEN=$(echo -e "$options" | dmenu -l 10 -i -p "Select Audio Output")
|
|
|
|
if [ -n "$CHOSEN" ]; then
|
|
CHOSEN_SINK=${sink_map["$CHOSEN"]}
|
|
pactl set-default-sink "$CHOSEN_SINK"
|
|
|
|
for stream in $(pactl list short sink-inputs | awk '{print $1}'); do
|
|
pactl move-sink-input "$stream" "$CHOSEN_SINK"
|
|
done
|
|
fi
|
|
|