Você está próximo, na verdade, não quer executar um script em libnotify , mas sim criar um monitor contra o evento que está sendo acionado para causar a notificação. Você pode até ser capaz de acionar a mensagem que está sendo enviada por notify-send , mas eu não tentei isso diretamente, então não posso confirmar.
OBSERVAÇÃO: libnotify só pode produzir as mensagens via notify-send do que eu consegui encontrar nas minhas pesquisas.
Para monitorar um evento, use dbus-monitor . Um exemplo de script pode ser construído da seguinte forma:
excerto de Como monitorar continuamente o rhythmbox para alteração de faixa usando o bash
#!/bin/bash
interface=org.gnome.Rhythmbox.Player
member=playingUriChanged
# listen for playingUriChanged DBus events,
# each time we enter the loop, we just got an event
# so handle the event, e.g. by printing the artist and title
# see rhythmbox-client --print-playing-format for more output options
dbus-monitor --profile "interface='$interface',member='$member'" |
while read -r line; do
printf "Now playing: "
rhythmbox-client --print-playing
done
O acima observa a interface org.gnome.Rhythmbox.Player observando o membro playingUriChanged ser chamado. Quando é o resultado é lido pelo comando read com o conteúdo sendo armazenado na variável line .
O conteúdo de line na verdade não é usado apenas para coletar os resultados de dbus-monitor . Os resultados dentro do loop while imprimiriam a saída da seguinte forma:
Now playing: Daft Punk - Overture
Now playing: Daft Punk - The Grid
Os nomes das músicas estão sendo produzidos a partir de rythmbox-client --print-playing .
Determinando um sinal / evento do DBUS
Você pode consultar esses 2 Q & A para mais detalhes sobre como fazer isso: