Переключение звуковухи в PulseAudio
Иногда бывает нужно перенести все источники звука на другой синк (например потому что у Вас usb-наущники), а делать это руками лень и зачем™. В Gnome 2, мне доложили, микшер позволял это делать, но пользователем других окружений, видимо придется довольствоваться “наколеночными” решениями. Хочу предложить свое.
#!/bin/bash
sinks=`pacmd list-sinks | sed -rn 's/\s*name: <([^>]+)>/\1/p' | grep -v combined`
nowsink=`pacmd list-sinks | sed -rn '/\s*\* index:/ {n; s/\s*name: <([^>]+)>/\1/p}'`
INPUTS=`pacmd list-sink-inputs | sed -rn '/^\s*index/ s/.*: (.*)/\1/p'`
if [ "$1" == "-g" ]; then
newsink=`echo -e "$sinks" | sed 'a \ ""' | xargs Xdialog --menubox 'Choose output' 10 100 3 2>&1`
elif [ "$#" -eq 0 ]; then
newsink=`echo -e "$sinks\n$sinks" | sed -n "/$nowsink/ { n ; p ; q }"`
else
newsink=$1
fi
for i in $INPUTS; do
echo pacmd move-sink-input $i $newsink
pacmd move-sink-input $i $newsink
done
echo pacmd set-default-sink $newsink
pacmd set-default-sink $newsink
Скрипт без параметров переключает на следующую звуковую по списку (кроме combined), либо принимает 1 параметр – номер/название sink, либо параметр -g и отображает графическое меню (при помощи Xdialog) выбора синка.
Вызов без параметров удобно повесить на хоткей.
Скрипт довольно жестко привязан к формату вывода pacmd, поэтому может вдруг не работать на каких-то версиях пульса. У меня сейчас 3.0, но c 2.9х он тоже работал.
И да, я тут злоупотребляю sed-ом. Все это можно было сделать гораздо аккуратнее. Но просто лень и зачем™.
UPD. Конечно же устанавливать умолчальный синк надо один раз, тут я конечно ошибся.