Files
dotfiles/bin/paselect

50 lines
1.3 KiB
Bash
Executable File

#!/usr/bin/env bash
# Sinks
sinks=$(pactl list short sinks | awk '{print $2}')
chosen_sink=$(echo -e "$sinks" | rofi -dmenu -selected-row 0)
if [ "$chosen_sink" != "" ]; then
pactl set-default-sink "$chosen_sink"
fi
# Sources
sources=$(pactl list short sources | grep -h 'alsa_input' | awk '{print $2}')
chosen_source=$(echo -e "$sources" | rofi -dmenu -selected-row 0)
if [ "$chosen_source" != "" ]; then
pactl set-default-source "$chosen_source"
fi
# If nothing new has been selected -> exit gracefully now
if [ "$chosen_sink" == "" ] && [ "$chosen_source" == "" ]; then
exit 0;
fi
# Move all streams?
chosen=$(echo -e "Send all streams to new defaults?\nYes\nNo" | rofi -dmenu -selected-row 1)
if [ "$chosen" == "Yes" ]; then
if [ "$chosen_sink" != "" ]; then
pactl list short sink-inputs|while read stream; do
streamId=$(echo $stream|cut '-d ' -f1)
echo "moving stream $streamId to $chosen_sink"
pactl move-sink-input "$streamId" "$chosen_sink"
done
fi
if [ "$chosen_source" != "" ]; then
pactl list short source-outputs|while read stream; do
streamId=$(echo $stream|cut '-d ' -f1)
echo "moving stream $streamId to $chosen_source"
pactl move-source-output "$streamId" "$chosen_source"
done
fi
fi
exit 0