Qual código é executado quando os fones de ouvido são desconectados?

9

Quero executar um script em desconectar fones de ouvido, mas me ressenti da ideia de pesquisa constante do status quando já existe algum código executado quando ele é alterado.

int_ua
fonte

Respostas:

9

Na maioria dos sistemas, se não em todos, o ACPI pode manipular esse evento. Para testar isso:

  1. Corre acpi_listen
  2. Desconecte e reconecte fones de ouvido, exemplo de saída: (microfone / orelhas compartilham o mesmo conector no meu laptop)

    jack/headphone HEADPHONE unplug
    jack/microphone MICROPHONE unplug
    jack/headphone HEADPHONE plug
    jack/microphone MICROPHONE plug
    
  3. Coloque your-script.shem/etc/acpi/

  4. Adicione um arquivo de acionador de eventos para seu script em /etc/acpi/events/

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

    Verifique os outros arquivos lá para aprender.

  5. Pode ser necessário reiniciar o acpidserviço para recarregar as regras alteradas em/etc/acpi/events/

    sudo service acpid restart
    

Referência: man acpid

user.dz
fonte
Agora só preciso descobrir como fazer o dbus funcionar com scripts ACPI, mas essa é uma pergunta diferente.
Int_ua
2
@int_ua, você precisa escrever a DBUS_SESSION_BUS_ADDRESSvariável de ambiente em um arquivo em sua propriedade com um script iniciado ~/.config/autostart/dbus.desktop. Então você pode executar a su YOURUSER -c "DBUS_SESSION_BUS_ADDRESS=$(cat ~/.dbus_address) amixer ......."partir de/etc/acpi/your-script.sh
Germar
Ei, escrevi um script para mostrar uma notificação. Seguiu exatamente o que você disse. Meu script executa o envio de notificação "Fones de ouvido conectados" no evento plug. Mas parece que não funciona. askubuntu.com/questions/877804/…
thewebjackal 02/02
1

A versão atual do seu script agora contém um sleep 0.25comando.

sleepé baseado em timer, portanto, não usa nenhum ciclo de processamento enquanto dorme ...

Ele usa um pouquinho muito pequeno de CPU para configurar o timer, mas sleep 1(espera 1 segundo), sleep 60(espera por um minuto) e sleep 86400(espera por um dia), todos usam o mesmo número de ciclos de CPU.

No entanto, o uso da ACPI é a solução perfeita , pois a ACPI é orientada a eventos, em vez de orientada por pesquisas.

Fabby
fonte