Мне нравится переключать звук с динамика на наушники USB с помощью ярлыка. Есть ли способ сделать это?
Проверьте на имена порта pactl list sinks
(Я удаляю не необходимый вывод приемников):
Sink #1
State: RUNNING
Name: alsa_output.pci-0000_00_1b.0.analog-stereo
Description: Built-in Audio Analog Stereo
Driver: module-alsa-card.c
...
Ports:
analog-output-speaker: Speakers (priority: 10000, not available)
analog-output-headphones: Headphones (priority: 9000, available)
Active Port: analog-output-headphones
Formats:
pcm
Установите использование порта приемника pactl set-sink-port
:
pactl set-sink-port 1 analog-output-speaker
или
pactl set-sink-port 1 analog-output-headphones
Если Вы используете съемное устройство (Пример: USB-устройства), лучше использовать приемник name
вместо id
. Например:
pactl set-sink-port alsa_output.pci-0000_00_1b.0.analog-stereo analog-output-headphones
Ссылка: man pactl
Сделайте это в 2 шага:
Найдите параметр командной строки, чтобы переключаться между этими настройками.
Добавьте их к некоторым комбинациям клавиш. Настройки системы >> Клавиатура >> Сочетания клавиш
Автоматизированное решение https://ubuntuforums.org/showthread.php?t=1370383 Он работает в Ubuntu 18.04
Откройте терминал и введите:
sudoedit /usr/local/bin/audio-device-switch.ш
Скопируйте и вставьте приведенный ниже код в редактор nano.
Сохраните его и закройте редактор nano.
sudo chmod 755 /usr/local/bin/audio-device-switch.sh
Система -> Настройки -> Сочетания клавиш
Нажмите Добавьте и введите Переключение между аудиоустройствами в качестве имени и audio-device-switch.sh в качестве команды и нажмите Применить .
Выберите только что добавленную строку быстрого доступа и нажмите на столбец ярлык. 8. Выберите комбинацию клавиш - например, Выигрыш + F12.
Вот и все - теперь вы можете подключить устройство HDMI и переключать аудиовыход, нажимая выбранную комбинацию клавиш.
Код:
#!/bin/bash
declare -i sinks_count=`pacmd list-sinks | grep -c index:[[:space:]][[:digit:]]`
declare -i active_sink_index=`pacmd list-sinks | sed -n -e 's/\*[[:space:]]index:[[:space:]]\([[:digit:]]\)/\1/p'`
declare -i major_sink_index=$sinks_count-1
declare -i next_sink_index=0
if [ $active_sink_index -ne $major_sink_index ] ; then
next_sink_index=active_sink_index+1
fi
#change the default sink
pacmd "set-default-sink ${next_sink_index}"
#move all inputs to the new sink
for app in $(pacmd list-sink-inputs | sed -n -e 's/index:[[:space:]]\([[:digit:]]\)/\1/p');
do
pacmd "move-sink-input $app $next_sink_index"
done
#display notification
declare -i ndx=0
pacmd list-sinks | sed -n -e 's/device.description[[:space:]]=[[:space:]]"\(.*\)"/\1/p' | while read line;
do
if [ $next_sink_index -eq $ndx ] ; then
notify-send -i notification-audio-volume-high "Sound output switched to" "$line"
exit
fi
done
У меня Ubuntu 20, и я понял, что индексы устройств не считаются от 0 до COUNT-1. Поэтому мне пришлось изменить сценарий. Сейчас работает этот:
#!/bin/bash
declare -i sinks_count=`pacmd list-sinks | grep -c index:[[:space:]][[:digit:]]`
if [ $sinks_count -eq 0 ] ; then
exit
fi
declare -i active_sink_index=`pacmd list-sinks | sed -n -e 's/\*[[:space:]]index: [[:space:]]\([[:digit:]]\)/\1/p'`
active_index_position_found=0
let next_sink_index=-1
while read index ;
do
declare -i ind=($(echo $index | tr -dc '[0-9]+'))
if [ $next_sink_index -lt 0 ] ; then
export next_sink_index=$ind
fi
if [ $active_index_position_found -eq 1 ] ; then
export next_sink_index=$ind
break;
fi
if [ $active_sink_index -eq $ind ] ; then
export active_index_position_found=1
fi
done < <(pacmd list-sinks | grep index:[[:space:]][[:digit:]])
#change the default sink
pacmd "set-default-sink ${next_sink_index}"
#move all inputs to the new sink
for app in $(pacmd list-sink-inputs | sed -n -e 's/index:[[:space:]]\([[:digit:]] \)/\1/p');
do
pacmd "move-sink-input $app $next_sink_index"
done
#display notification
declare -i ndx=0
pacmd list-sinks | sed -n -e 's/device.description[[:space:]]=[[:space:]]"\(.*\)" /\1/p' | while read line;
do
if [ $next_sink_index -eq $ndx ] ; then
notify-send -i notification-audio-volume-high "Sound output switched to" "$line"
exit
fi
ndx+=1
done;