J'ai cherché un peu tranquillement mais tous les articles et réponses vous disent seulement comment créer votre propre notification. Ce que je veux faire est de garder une trace de toutes les notifications effectuées par toutes les applications et d'exécuter un script particulier chaque fois qu'une notification particulière est effectuée.
Je vais écrire mon programme pour ce faire. Tout ce dont j'ai besoin, c'est comment "intercepter" les notifications.
Si nous modifions l'extrait proposé dans cette très belle réponse un peu, nous pouvons écrire la notification appelée dans un fichier:
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 sinon l'utiliser pour déclencher des actions ultérieures.
Si nous modifions l'extrait pour exécuter un script lorsqu'une notification apparaît:
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 {}
et script.sh
est:
#!/bin/bash
string=$1
match="een aap op een fiets"
if [[ $string == $match ]]
then
gedit
fi
Ensuite, à chaque fois, si la notification correspond à "een aap op een fiets":
gedit
s'ouvrira :)
Bien que le code fonctionne parfaitement pour intercepter la notification afin de déclencher tout type d'action, je n'ai trouvé aucun moyen d'identifier le pid
qui a appelé la notification.