Quale codice viene eseguito quando le cuffie vengono disconnesse?


Risposte:


9

Nella maggior parte dei sistemi, se non in tutti, ACPI può gestire questo evento. Per testarlo:

  1. Correre acpi_listen
  2. Scollega e ricollega le cuffie, uscita di esempio: (il microfono / le orecchie condividono lo stesso jack sul mio laptop)

    jack/headphone HEADPHONE unplug
    jack/microphone MICROPHONE unplug
    jack/headphone HEADPHONE plug
    jack/microphone MICROPHONE plug
    
  3. Metti your-script.shdentro/etc/acpi/

  4. Aggiungi un file trigger di evento per il tuo script in /etc/acpi/events/

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

    Controlla gli altri file lì per imparare da.

  5. Potrebbe essere necessario riavviare il acpidservizio per ricaricare le regole modificate/etc/acpi/events/

    sudo service acpid restart
    

Riferimento: man acpid


Ora devo solo scoprire come far funzionare dbus dagli script ACPI, ma questa è una domanda diversa.
int_ua,

2
@int_ua devi scrivere la DBUS_SESSION_BUS_ADDRESSvariabile di ambiente in un file nel tuo homedir con uno script iniziato con ~/.config/autostart/dbus.desktop. Quindi puoi scappare su YOURUSER -c "DBUS_SESSION_BUS_ADDRESS=$(cat ~/.dbus_address) amixer ......."da/etc/acpi/your-script.sh
Germar il

Ehi, ho scritto una sceneggiatura per mostrare una notifica. Seguito esattamente quello che hai detto. Il mio script esegue notifica-invio "Cuffie connesse" su evento plug. Ma non sembra funzionare. askubuntu.com/questions/877804/…
thewebjackal

1

La versione corrente dello script ora contiene un sleep 0.25comando.

sleepè basato sul timer, quindi non utilizza alcun ciclo di elaborazione durante il sonno ...

Usa un po 'di CPU per impostare il timer, ma sleep 1(sleep 1 secondo), sleep 60(sleep per un minuto) e sleep 86400(sleep per un giorno) usano tutti lo stesso numero di cicli CPU.

L'utilizzo di ACPI è tuttavia la soluzione perfetta poiché ACPI è guidato dagli eventi anziché dal polling.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.