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: