Quel code est exécuté lorsque les écouteurs sont déconnectés?

Réponses:

9

Dans la plupart des systèmes, sinon tous, ACPI peut gérer cet événement. Pour tester cela:

  1. Courir acpi_listen
  2. Débranchez et rebranchez le casque, exemple de sortie: (le micro / les oreilles partagent la même prise sur mon ordinateur portable)

    jack/headphone HEADPHONE unplug
    jack/microphone MICROPHONE unplug
    jack/headphone HEADPHONE plug
    jack/microphone MICROPHONE plug
    
  3. mettre your-script.shen/etc/acpi/

  4. Ajoutez un fichier déclencheur d'événement pour votre script dans /etc/acpi/events/

    event=jack/headphone HEADPHONE unplug
    action=/etc/acpi/your-script.sh
    

    Vérifiez les autres fichiers qui s'y trouvent.

  5. Vous devrez peut-être redémarrer le acpidservice pour recharger les règles modifiées dans/etc/acpi/events/

    sudo service acpid restart
    

Référence: man acpid

user.dz
la source
Il ne me reste plus qu'à découvrir comment faire fonctionner dbus à partir des scripts ACPI, mais c'est une question différente.
int_ua
2
@int_ua vous devez écrire la DBUS_SESSION_BUS_ADDRESSvariable environ dans un fichier de votre homedir avec un script commencé par ~/.config/autostart/dbus.desktop. Ensuite, vous pouvez exécuter à su YOURUSER -c "DBUS_SESSION_BUS_ADDRESS=$(cat ~/.dbus_address) amixer ......."partir de/etc/acpi/your-script.sh
Germar
Hé, j'ai écrit un script pour montrer une notification. J'ai suivi exactement ce que vous avez dit. Mon script exécute notifier-envoyer "Casque connecté" lors de l'événement de prise. Mais ça ne semble pas fonctionner. askubuntu.com/questions/877804/…
thewebjackal
1

La version actuelle de votre script contient désormais une sleep 0.25commande.

sleepest basé sur une minuterie, donc n'utilise aucun cycle de traitement pendant le sommeil ...

Il utilise un tout petit peu de CPU pour configurer la minuterie, mais sleep 1(sommeil 1 seconde), sleep 60(sommeil pendant une minute) et sleep 86400(sommeil pendant une journée) utilisent tous le même nombre de cycles CPU.

L'utilisation d'ACPI est cependant la solution parfaite car ACPI est piloté par les événements plutôt que par les sondages.

Fabby
la source