Usando o comando acpi_listen em um shell script

1

Estou no UBuntu 16.04. Eu fiz uma pergunta aqui sobre os fones de ouvido plug desconecte o evento. O que eu tentei não funcionou. Eu quero usar o comando acpi_listen para ouvir o evento headphones conectado e exibir uma mensagem usando o comando notify-send. Como usar o acpi_listen em um script de shell ?

    
por Logan 02.02.2017 / 18:57

1 resposta

2

Escrever um script como esse é bastante simples - você precisa canalizar acpi_listen para while IFS= read -r line ; do ... done structure e cuidar da manipulação dos eventos dentro dessa estrutura. O comando read shell builtin aguardará uma linha de texto de acpi_listen e o processamento ocorrerá quando a instrução if perceber que a linha contém o texto apropriado. Como alternativa, pode-se usar a instrução case para melhor portabilidade do script.

Aqui está o script simples que eu pessoalmente usaria. Testado no Ubuntu 16.04 LTS

#!/bin/bash
acpi_listen | while IFS= read -r line;
do
    if [ "$line" = "jack/headphone HEADPHONE plug" ]
    then
       notify-send "headphones connected"
       sleep 1.5 && killall notify-osd
    elif [ "$line" = "jack/headphone HEADPHONE unplug" ]
    then
       notify-send "headphones disconnected"
       sleep 1.5 && killall notify-osd
    fi
done

Observe que, se você planeja executar isso a partir do cron job ou via /etc/rc.local , precisará exportar seu DBUS_SESSION_BUS_ADDRESS para notify-send para o trabalho.

    
por Sergiy Kolodyazhnyy 02.02.2017 / 21:06