Resposta curta
- Para ver as notificações, você precisa instalar o notify-osd
sudo apt install notify-osd
- Crie um arquivo de texto
<my_name>.sh
no diretório /home/<user_name>/
. E adicione permissão de execução ao arquivo chmod +x /home/<user_name>/<my_name>.sh
-
Cole o texto abaixo no arquivo <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
-
Vá para o menu Configurações de inicialização do seu sistema linux (Ubuntu, Kubuntu, Xubuntu, etc). Defina /home/<user_name>/<my_name>.sh
para autostart com o seu ambiente de desktop (xfce, KDE, Gnome, etc.).
Aviso! Se você usar o KDE, NÃO adicione o arquivo para "Start script before KDE"
ou "Application"
com bash /home/<user_name>/<my_name>.sh
.
Use como script (cenário) e "Iniciar com o KDE" .
SE você já fez isso e pressione ctrl + alt + F2
, faça o login como usuário e exclua rm /home/<user_name>/<my_name>.sh
. Se você não tiver permissões para excluir, remonte o disco antes de excluir mount -o remount, rw /
.
Como editar o script
Alguns scripts de autostart de cache de sistemas baseados em linux. Isso significa que, mesmo que você edite /home/<user_name>/<my_name>.sh
e logout / login
ou restart
do sistema, o script permanecerá o mesmo.
No KDE, você pode encontrar o link simbólico do script armazenado em cache em /home/<user_name>/.config/autostart-scripts/<my_name>.sh
. Exclua o arquivo <my_name>.sh
manualmente, logout / login
system, adicione o script a autostart
novamente e logout / login
novamente.
Parece-me que é um bug do KDE . Eu não sei sobre outros DE (xfce, Gnome etc)
O que você precisa saber
Você pode ver o texto como "jack/headphone HEADPHONE plug"
no código acima. É o nome do evento dos fones de ouvido.
Para ver eventos:
1. Digite o console acpi_listen
2. Conecte e desconecte fones de ouvido (ou outros dispositivos)
3. Você verá os nomes dos eventos no console . Será algo como um texto abaixo
user@user-PC:~$ acpi_listen
jack/headphone HEADPHONE unplug
jack/microphone MICROPHONE unplug
jack/headphone HEADPHONE plug
jack/microphone MICROPHONE plug
Se os nomes dos eventos no script acima forem diferentes , substitua-os pelos nomes dos eventos da saída console .
ACPI e eventos
Para ver e testar eventos da ACPI, você pode usar 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 ------------
Por alguns motivos, /etc/acpi/events/jack
não funciona para mim. Possivelmente eu tenha a opção CONFIG_SND_HDA_INPUT_JACK incorreta. Para testar isso use
sudo grep CONFIG_SND_HDA_INPUT_JACK /boot/config-$(uname -r)
Minha resposta é baseada em esta resposta.