Я хочу выполнить скрипт при отключении наушников, но мне не нравится идея постоянного опроса статуса, когда уже выполняется какой-то код, когда он изменяется.
Я хочу выполнить скрипт при отключении наушников, но мне не нравится идея постоянного опроса статуса, когда уже выполняется какой-то код, когда он изменяется.
Ответы:
В большинстве систем, если не во всех, ACPI может обработать это событие. Чтобы проверить это:
acpi_listen
Отключите и снова подключите наушники, пример вывода: (микрофон / уши находятся в одном разъеме на моем ноутбуке)
jack/headphone HEADPHONE unplug
jack/microphone MICROPHONE unplug
jack/headphone HEADPHONE plug
jack/microphone MICROPHONE plug
Положить your-script.sh
в/etc/acpi/
Добавьте файл триггера событий для вашего скрипта в /etc/acpi/events/
event=jack/headphone HEADPHONE unplug
action=/etc/acpi/your-script.sh
Проверьте другие файлы там, чтобы учиться.
Возможно, вам придется перезапустить acpid
службу, чтобы перезагрузить измененные правила в/etc/acpi/events/
sudo service acpid restart
Ссылка: man acpid
DBUS_SESSION_BUS_ADDRESS
переменную окружения в файл в вашем домашнем каталоге с помощью скрипта, с которого начинается ~/.config/autostart/dbus.desktop
. Тогда вы можете бежать su YOURUSER -c "DBUS_SESSION_BUS_ADDRESS=$(cat ~/.dbus_address) amixer ......."
от/etc/acpi/your-script.sh
Текущая версия вашего скрипта теперь содержит sleep 0.25
команду.
sleep
является таймер на основе так не использует какие - либо обработку циклов во время сна ...
Для установки таймера он использует крошечный процессор, но sleep 1
(в режиме ожидания 1 секунда), sleep 60
(в режиме ожидания в течение минуты) и sleep 86400
(в режиме ожидания в течение дня) все используют одинаковое количество циклов ЦП.
Однако использование ACPI является идеальным решением, так как ACPI управляется событиями, а не опросами.