Я намерен запустить скрипт, когда мои наушники подключаются к моему ПК. Во-первых, чтобы проверить, что такое событие действительно отслеживается, я запустил acpi_listen
и попробовал подключить/отключить наушники несколько раз. Вот что он выдал:
jack/headphone HEADPHONE plug
jack/headphone HEADPHONE unplug
jack/headphone HEADPHONE plug
jack/headphone HEADPHONE unplug
Итак, я предполагаю, что событие правильно перехвачено. Затем я создал новое событие с именем jack-headphone
under /etc/acpi/events
и заполнил его следующим содержимым:
event=jack/headphone
action=/etc/acpi/jack-headphone.sh %e
Наконец, я создал сам скрипт ( /etc/acpi/jack-headphone.sh
), который я хотел бы запускать всякий раз, когда я подключаю/отключаю наушники, а затем сделал его исполняемым с помощью
sudo chmod +x /etc/acpi/jack-headphone.sh
Вот как выглядит сам сценарий:
#!/bin/bash
set -e -u
if [ "$1" = "jack/headphone" -a "$2" = "HEADPHONE" ]; then
case "$3" in
plug)
pacmd set-source-port 1 analog-input-headset-mic
;;
unplug)
pacmd set-source-port 1 analog-input-internal-mic
;;
esac
fi
Команда pacmd set-source-port 1 analog-input-headset-mic
устанавливает микрофон наушников в качестве входа по умолчанию, тогда как pacmd set-source-port 1 analog-input-internal-mic
то же самое происходит с внутренним микрофоном. Что происходит, так это то, что если я запускаю такие команды в терминале, они ведут себя как и ожидалось, переключая вход по умолчанию на соответствующий. Однако, когда я подключаю/отключаю наушники и скрипт jack-headphone.sh
запускается, вход по умолчанию не изменяется соответствующим образом. Как это возможно?
Я что-то упускаю или делаю что-то не так? Для справки, я использую Ubuntu 18.04