Как автоматически отключить звук на разъединении наушников? Или как коснуться сценария удара слушателю системного события?

Моя жизнь была бы легче, если бы Ubuntu отключала звук sound каждый раз я разъединяюсь headphones, так как каждый раз, окружая отличается (день в качестве примера / ночь), но тот же выходной объем.

Я могу выяснить сценарий для этого, но не без взаимодействия с Ubuntu event listener. Я ничего не знаю об этом до сих пор.

Я буду ценить решение или подсказку для любого предмета, а скорее не установку любого package для так простой вещи набор их делает update слишком долго + мне нравится, когда моя система является возможно чистой или обоснованной.


На самом деле я записал бы намного больше решений, из которых я отсутствую со знанием reaction to events, как автокорректировка настроек мыши USB на подключении (ад они сбрасывают для?) или автоматическое включение модем GSM на подключении.

6
задан 27 October 2014 в 02:29

3 ответа

Сначала, открытый alsamixer программа в терминале (Ctrl+Alt+T).

enter image description here

Проверка, если автобесшумный режим Включен. Можно перейти к нему при помощи лево-правильных ключей, и вниз переключить значение. Esc для выхода.

Теперь, если Вы отключаете звук звука без наушников, включают наушники и отключают их снова, звук через динамики должен остаться с отключенным звуком. По крайней мере, на моей машине, с включенным Автобесшумным режимом, я могу сохранить докладчиков отключенными звук, в то время как наушники могут произвести звук после включения.

5
ответ дан 17 November 2019 в 09:24

Можно автоматизировать, это путем установки слушателя ACPI для наушника включается/отключает события:

$ grep headphone /etc/acpi/handler.sh -A 11                                                                                                         
    jack/headphone)                                                                                                                                 
        case "$3" in
            plug)
                logger "Headphones plugged"
                amixer sset 'Headphone' 30%
                ;;
            unplug)
                logger "Headphones unplugged"
                amixer sset 'Speaker' 30%
                ;;
    esac
    ;;
$ systemctl restart acpid

Иначе:
Вместо изменения /etc/acpi/handler.sh можно создать другой файл конфигурации в /etc/acpi/events/ и укажите свой собственный сценарий для обработки этих событий. Используйте конфигурацию по умолчанию в качестве шаблона:

$ cat /etc/acpi/events/anything                                                                                                                     
# Pass all events to our one handler script                                                                                                         
event=.*
action=/etc/acpi/handler.sh %e

Посмотрите на man acpid для получения дополнительной информации.

0
ответ дан 23 November 2019 в 07:49

Короткий ответ

  1. Для наблюдения уведомлений, необходимо установить, уведомляют-osd sudo apt install notify-osd
  2. Создайте текстовый файл <my_name>.sh в Вашем /home/<user_name>/ каталог. И добавьте, выполняют разрешение в файл chmod +x /home/<user_name>/<my_name>.sh
  3. Вставьте текст ниже к <my_name>.sh файл

    #!/bin/bash
    acpi_listen | while IFS= read -r line;
    do
        if [ "$line" = "jack/headphone HEADPHONE plug" ]
        then
           amixer -D pulse set Master mute
           notify-send "headphones connected. Sound is muted"
        elif [ "$line" = "jack/headphone HEADPHONE unplug" ]
        then
           amixer -D pulse set Master mute
           notify-send "headphones disconnected.  Sound is muted"
        fi
    done
    
  4. Войдите в меню Startup Configurations своей системы Linux (человечность, kubuntu, xubuntu и т.д.). Набор /home/<user_name>/<my_name>.sh файл для автозапуска с Вами настольной среды (xfce, KDE, Gnome и т.д.).

Предупреждение! Если Вы используете KDE затем, ДОН НЕ добавляет файл для "Start script before KDE" или "Application" с bash /home/<user_name>/<my_name>.sh.
Использование в качестве сценария (сценарий) и "Запускается С KDE".
ЕСЛИ Вы сделали это уже затем нажимает ctrl + alt + F2, войдите в систему как пользователь и удалите rm /home/<user_name>/<my_name>.sh. Если у Вас нет полномочий удалить, затем повторно монтируют Ваш диск перед удалением mount -o remount, rw /.

Как отредактировать сценарий

Некоторый основанный на Linux системный кэш автоматически запускает сценарии. Это означает, редактируете ли Вы /home/<user_name>/<my_name>.sh и logout / login или restart система затем сценарий останется такой же.
В KDE можно найти кэшируемую символьную ссылку сценария в /home/<user_name>/.config/autostart-scripts/<my_name>.sh. Удалите <my_name>.sh зарегистрируйте вручную, logout / login система, добавляет сценарий к autostart снова и logout / login снова.
Это кажется мне, это - ошибка KDE. Я не знаю о другом DE (xfce, Gnome и т.д.)

Что необходимо знать

Вы видите текст как "jack/headphone HEADPHONE plug" в коде выше. Это - имя события наушников.

Видеть события:
1. Введите в консоли acpi_listen
2. Включите и отключите наушники (или другой устройства)
3. Вы будете видеть имена события в консоли. Это будет что-то как текст ниже

    user@user-PC:~$ acpi_listen
    jack/headphone HEADPHONE unplug
    jack/microphone MICROPHONE unplug
    jack/headphone HEADPHONE plug
    jack/microphone MICROPHONE plug

Если имена события в сценарии выше отличаются, затем заменяют их Вашими именами события от консольного вывода.

ACPI и события

Чтобы видеть и протестировать события ACPI, можно использовать evtest sudo apt install evtest

    user@user-PC:~$ sudo evtest
    No device specified, trying to scan all of /dev/input/event*
    Available devices:
    /dev/input/event0:      Lid Switch
    /dev/input/event1:      Power Button
    /dev/input/event2:      Power Button
    /dev/input/event3:      AT Translated Set 2 keyboard
    /dev/input/event4:      Video Bus
    /dev/input/event5:      SynPS/2 Synaptics TouchPad
    /dev/input/event6:      COMPANY USB Device
    /dev/input/event7:      COMPANY USB Device
    /dev/input/event8:      COMPANY USB Device
    /dev/input/event9:      HP Wireless hotkeys
    /dev/input/event10:     HDA Intel HDMI HDMI/DP,pcm=3
    /dev/input/event11:     HDA Intel HDMI HDMI/DP,pcm=7
    /dev/input/event12:     HDA Intel HDMI HDMI/DP,pcm=8
    /dev/input/event13:     HDA Intel HDMI HDMI/DP,pcm=9
    /dev/input/event14:     HDA Intel HDMI HDMI/DP,pcm=10
    /dev/input/event15:     HDA Intel PCH Mic
    /dev/input/event16:     HDA Intel PCH Headphone
    /dev/input/event17:     HP WMI hotkeys
    /dev/input/event18:     HP Webcam: HP Webcam
    Select the device event number [0-18]: 16
    Input driver version is 1.0.1
    Input device ID: bus 0x0 vendor 0x0 product 0x0 version 0x0
    Input device name: "HDA Intel PCH Headphone"
    Supported events:
    Event type 0 (EV_SYN)
    Event type 5 (EV_SW)
        Event code 2 (SW_HEADPHONE_INSERT) state 1
    Properties:
    Testing ... (interrupt to exit)
    Event: time 1522588668.319567, type 5 (EV_SW), code 2 (SW_HEADPHONE_INSERT), value 0
    Event: time 1522588668.319567, -------------- SYN_REPORT ------------                      
    Event: time 1522588670.035275, type 5 (EV_SW), code 2 (SW_HEADPHONE_INSERT), value 1       
    Event: time 1522588670.035275, -------------- SYN_REPORT ------------

По некоторым причинам /etc/acpi/events/jack не работает на меня. Возможно у меня есть неправильная опция CONFIG_SND_HDA_INPUT_JACK. Протестировать то использование

    sudo grep CONFIG_SND_HDA_INPUT_JACK /boot/config-$(uname -r)

Мой ответ основан на этом ответе.

1
ответ дан 23 November 2019 в 07:49

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

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