Не всем будет полезно это знать, но тем кому это необходимо будут радоваться! Сегодня я научу Вас, как менять выход с одной аудиокарты на другую одной кнопкой, причем под новой Ubuntu 11.04 с использованием Unity.
Для начала надо прикинуть как меняется звук в самом гноме. Меняется он при помощи PulseAudio, Кому интересно могут порыться полностью, но я затрону только часть. Почитав TFM я увидел, что в самом низу страницы есть скриптик, который подходит под наши нужды.
Слегонца испохабив и урезав комментарии для блога я получил следующее:
#!/bin/bash
totalsc=$(pacmd "list-sinks" | grep card: | wc -l)
if [ $totalsc -le 1 ]; then
notify-send -u critical -t 5000 "Nothing to switch, system only has one sound card."
exit
fi
scindex=$(pacmd list-sinks | awk '$1 == "*" && $2 == "index:" {print $3}')
cards=$(pacmd list-sinks | sed 's|*||' | awk '$1 == "index:" {print $2}')
PICKNEXTCARD=1
count=0
for CARD in $cards; do
if [ $PICKNEXTCARD == 1 ]; then
nextsc=$CARD
PICKNEXTCARD=0
nextind=$count
fi
if [ $CARD == $scindex ]; then
PICKNEXTCARD=1
fi
count=$((count+1))
done
pacmd "set-default-sink $nextsc"
inputs=$(pacmd list-sink-inputs | awk '$1 == "index:" {print $2}')
for INPUT in $inputs; do # Move all current inputs to the new default sound card
pacmd move-sink-input $INPUT $nextsc
done
nextscdesc=$(pacmd list-sinks | awk '$1 == "device.description" {print substr($0,5+length($1 $2))}' \
| sed 's|"||g' | awk -F"," 'NR==v1{print$0}' v1=$((nextind+1)))
exit
Всё что нам надо, это сохранить этот скрипт в файл и положить его в необходимую папку. Назовем файл soundswitch и наполним его сосуд истиной кода. После чего выполняем копирование:
sudo cp soundswitch /usr/local/bin/
Дальше создаём ярлык для запуска скрипта. Лично я сделал это ручками, создав файлик, наполнив его следующим содержимым:
[Desktop Entry]
Name=Soundswitch
Exec=/usr/local/bin/soundswitch
Icon=preferences-sound
Terminal=false
Type=Application
StartupNotify=false
Дальше следует просто перетянуть этот ярлык на панель Unity и получать удовольствие от клика и перманентной смены аудиокарты.
PS: Возникла проблемка с быстрой сменой в Unity. При нажатии на кнопку она сменяет аудиокарту, но потом долго тупит и только потом можно нажать снова. Пока не нашел как победить эту напасть.