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.
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.
Respostas:
Na maioria dos sistemas, se não em todos, o ACPI pode manipular esse evento. Para testar isso:
acpi_listenDesconecte 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
Coloque your-script.shem/etc/acpi/
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.
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
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
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.