Любой способ автоматически установить мой звуковой выход на HDMI, когда кабель подключен и выключен, когда он подключен? [duplicate]

Было бы здорово, если бы за меня это делала программа, но я полагаю, что bash-скрипт неизбежен. Однако, как человеку, который никогда не написал ни строчки кода на bash, мне, вероятно, понадобится много помощи. С чего начать?

1
задан 24 April 2017 в 18:18

1 ответ

Извините, у меня нет правильного ответа для Вас, но я могу предложить Вам следующую лучшую вещь:
Создайте переключатель к следующему приемнику аудиовыхода щелчком мыши.

Мотивация к решению:
Моя система имеет HDMI port+audio, панель аудио USB и зеленый аудио сокет. То, когда аудио USB выбрано, моя система не обнаруживает, когда аудиоразъем моих наушников (ООН), включилось. Таким образом, я не могу использовать аппаратные события и воздействовать на них.
Для этого я решил использовать pacmd; инструмент для управления аудиосистемой.
Это может использоваться в интерактивном режиме (pacmd) или с аргументами (pacmd - справка).

Краткое описание:
Сценарий и средство запуска на моей панели Xubuntu. Щелчок по средству запуска переключится к следующему приемнику аудиовыхода. Если какая-либо программа играет аудио, его приемник аудиовхода вызывается к выводу, снижают и уведомляют - отправляют, используется для информирования, какой приемник аудиовыхода активен.

Действия:
Количество аудиоустройств и их имен, вероятно, отличается в Вашей системе, таким образом, некоторые (незначительные) изменения в сценарии требуются. Комментарии я вставил сценарий (далее вниз) помогут настроить его.
Скопируйте и вставьте сценарий в файл под названием ToggleAudioOutput.
Сделайте это исполняемым файлом. Filemanager-> Rightclik-> Полномочия-> Галочка Позволяют...
В Терминале-> Каталог Изменения к местоположению файла.

$ chmod +x ToggleAudioOutput

Средство запуска на панели:
Щелкните правой кнопкой по панели->, Панель> Добавляет Новые Объекты-> Средство запуска.
Нажмите Add и Close.
Справа пустое средство запуска появляется; щелкните правой кнопкой по нему.
Свойства-> щелчок, маленький плюс
Имя: ToggleAudioOutput
Команда: просмотрите туда, где Вы хранили файл, и нажмите его
Значок: выберите хороший
Нажмите Create и Close
Щелкните правой кнопкой по средству запуска снова-> Перемещение это к приятному месту на панели.

Ссылка на рабочий стол:
Откройте File Manager и обзор к местоположению ToggleAudioOutput.
Щелкните правой кнопкой это-> Отправляет на Рабочий стол (создайте ссылку),

Сообщите мне если его полезное для Вас!

#!/bin/bash
# -- ToggleAudioOutput -- Script to change audio output sink.
#
# The script is based on the output of this command line.
# Of course the output varies per system. Copy & paste this command line
# in a terminal to find the number of devices and their names.
#
# $ pacmd list-sinks | grep -e 'index:' -e 'alsa.name' | awk 'NR%2{printf "%s",$0;next;}1'
#   index: 0                alsa.name = "HDMI 0"
# * index: 1                alsa.name = "USB Audio"
#   index: 2                alsa.name = "ALC662 rev3 Analog"
#
# Output sequence doesn't change except for the asterix (active device)
# and after (un)plugging usb audio devices. If your system has more or
# less devices, change the case statement accordingly.
##############################################################################
# Determine the current audio output sink, 0, 1 or 2.
OutputIndex=$(pacmd list-sinks | grep '\* index:' | awk '{ print $3 }')

# To force output to USB Audio add the command:  ToggleAudioOutput 1
# in an entry in Session and Startup -> Application Autostart.
if [ "$1" == "1" ]
then OutputIndex=1; Name="USB Audio"
else
   case $OutputIndex in
   0) OutputIndex=1; Name="USB Audio"
      ;;
   1) OutputIndex=2; Name="Speaker/Headphones"
      ;;
   2) OutputIndex=0; Name="HDMI 0"
# I don't use HDMI audio, so delete this and the following line if needed.
      OutputIndex=1; Name="USB Audio"
      ;;
   esac
fi
##############################################################################
# Do the work...
pacmd set-default-sink $OutputIndex
notify-send "Audio output device set to:   >$Name<" -t 5000

# Any programs playing audio? Force them to the current audio output sink.
for InputIndex in $(pacmd list-sink-inputs | grep 'index:' | awk '{print $2}')
do
   pacmd move-sink-input $InputIndex $OutputIndex
done
##############################################################################
#EOF
0
ответ дан 8 December 2019 в 05:38

Другие вопросы по тегам:

Похожие вопросы: