O libnotify pode ser usado para executar um script?

2

O libnotify pode ser usado para executar um script?

Eu quero usar um script para reproduzir um som ou até mesmo executar programas mais complicados por meio do notify-send em arquivos bash e outros programas.

Isso é possível? Parece usar apenas pop-ups?

    
por vfclists 27.04.2014 / 16:36

1 resposta

2

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:

por 27.04.2014 / 20:02