Mi intención es ejecutar un script cuando mis auriculares se conectan a mi PC. En primer lugar, para comprobar que dicho evento realmente se detectó, corrí acpi_listen
e intenté enchufar/desconectar los auriculares varias veces. Aquí está el resultado que dio:
jack/headphone HEADPHONE plug
jack/headphone HEADPHONE unplug
jack/headphone HEADPHONE plug
jack/headphone HEADPHONE unplug
Entonces, supongo que el evento se captó correctamente. Lo que luego hice fue crear un nuevo evento llamado jack-headphone
under /etc/acpi/events
y llenarlo con el siguiente contenido:
event=jack/headphone
action=/etc/acpi/jack-headphone.sh %e
Finalmente, creé el script real ( /etc/acpi/jack-headphone.sh
) que me gustaría ejecutar cada vez que conecto o desconecto mis auriculares y luego lo hice ejecutable usando
sudo chmod +x /etc/acpi/jack-headphone.sh
Así es como se ve el guión real:
#!/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
El comando pacmd set-source-port 1 analog-input-headset-mic
configura el micrófono de los auriculares como entrada predeterminada, mientras que pacmd set-source-port 1 analog-input-internal-mic
hace lo mismo con el micrófono interno. Lo que sucede es que si ejecuto dichos comandos en una terminal, se comportan como se esperaba, cambiando la entrada predeterminada a la apropiada. Sin embargo, cuando conecto o desconecto mis auriculares y jack-headphone.sh
se activa el script, la entrada predeterminada no se modifica en consecuencia. ¿Como es eso posible?
¿Me estoy perdiendo algo o estoy haciendo algo mal aquí? Para que conste, estoy usando Ubuntu 18.04.