Executar um script toda vez que um aplicativo específico fizer uma notificação

4

Procurei um pouco em silêncio, mas todos os artigos e respostas só informam como criar sua própria notificação. O que eu quero fazer é acompanhar todas as notificações feitas por todos os aplicativos e executar um script específico toda vez que uma notificação específica é feita.

Vou escrever meu programa para fazer isso. Tudo o que preciso de ajuda é como "interceptar" as notificações.

    
por piyushrungta25 13.11.2015 / 19:26

1 resposta

3

Use (e identifique) notificações para acionar ações subsequentes

Se editarmos o snippet proposto em esta resposta muito agradável , podemos escrever a notificação chamada para um arquivo :

dbus-monitor "interface='org.freedesktop.Notifications'" | grep --line-buffered "string" | grep --line-buffered -e method -e ":" -e '""' -e urgency -e notify -v | grep --line-buffered '.*(?=string)|(?<=string).*' -oPi | grep --line-buffered -v '^\s*$' | xargs -I '{}' echo {} > file.txt

ou use-o para desencadear ações subseqüentes.

Um exemplo

Se editarmos o snippet para executar um script quando uma notificação for exibida:

dbus-monitor "interface='org.freedesktop.Notifications'" | grep --line-buffered "string" | grep --line-buffered -e method -e ":" -e '""' -e urgency -e notify -v | grep --line-buffered '.*(?=string)|(?<=string).*' -oPi | grep --line-buffered -v '^\s*$' | xargs -I '{}' /bin/bash /path/to/script.sh {}

e script.sh são:

#!/bin/bash
string=
match="een aap op een fiets"
if [[ $string == $match ]]
  then
    gedit
fi

Em seguida, sempre que a notificação corresponder a "een aap op een fiets":

gedit será aberto:)

Nota

Embora o código funcione perfeitamente para interceptar a notificação para acionar qualquer tipo de ação, não encontrei uma maneira de identificar o pid que chamou a notificação.

    
por Jacob Vlijm 14.11.2015 / 17:07