Quiero ejecutar un script en la desconexión de auriculares, pero me molesta la idea de un sondeo constante del estado cuando ya hay algún código ejecutado cuando se cambia.
Quiero ejecutar un script en la desconexión de auriculares, pero me molesta la idea de un sondeo constante del estado cuando ya hay algún código ejecutado cuando se cambia.
Respuestas:
En la mayoría de los sistemas, si no en todos, ACPI puede manejar este evento. Para probar eso:
acpi_listen
Desenchufe y vuelva a enchufar los auriculares, salida de ejemplo: (el micrófono / los oídos comparten el mismo conector de mi computadora portátil)
jack/headphone HEADPHONE unplug
jack/microphone MICROPHONE unplug
jack/headphone HEADPHONE plug
jack/microphone MICROPHONE plug
Poner your-script.sh
en/etc/acpi/
Agregue un archivo desencadenante de evento para su script en /etc/acpi/events/
event=jack/headphone HEADPHONE unplug
action=/etc/acpi/your-script.sh
Verifique los otros archivos allí para aprender.
Es posible que deba reiniciar el acpid
servicio para volver a cargar las reglas modificadas en/etc/acpi/events/
sudo service acpid restart
Referencia: man acpid
DBUS_SESSION_BUS_ADDRESS
variable de entorno en un archivo en su homedir con un script iniciado ~/.config/autostart/dbus.desktop
. Entonces puedes huir su YOURUSER -c "DBUS_SESSION_BUS_ADDRESS=$(cat ~/.dbus_address) amixer ......."
de/etc/acpi/your-script.sh
La versión actual de su script ahora contiene un sleep 0.25
comando.
sleep
está basado en temporizador, por lo que no utiliza ningún ciclo de procesamiento mientras duerme ...
Utiliza una pequeña cantidad de CPU para configurar el temporizador, pero sleep 1
(dormir 1 segundo), sleep 60
(dormir un minuto) y sleep 86400
(dormir un día) todos usan el mismo número de ciclos de CPU.
Sin embargo, usar ACPI es la solución perfecta , ya que ACPI se basa en eventos en lugar de en encuestas.