Bem, as notificações do Gnome usam o D-BUS para passar as mensagens. A especificação do gnome descreve como usar as classes org.freedesktop.Notifications.*
e tem uma boa quantidade de dicas de formatação. Em geral, é um formato HTML-ish.
No entanto, você absolutamente não pode falar remotamente com o D-BUS em outra máquina. Não vamos nem começar em quantas brechas de segurança seriam abertas.
Ainda assim, você sempre pode ter um programa na máquina de destino que receberá a comunicação e fale com o D-BUS localmente já existente.
Existem duas opções que são wrappers em torno de org.freedesktop.Notifications.*
e tornam os programas de gravação muito mais fáceis:
-
libnotify
: que é quase um padrão de fato para fazer notificações, suporta não apenas o gnome, mas vários outros. -
notify-sharp-3
: por mais estranho que pareça, é uma funcionalidade baseada em C # de código aberto em torno de várias especificações de notificação. Em algum momento, ele até teve seu próprio idioma chamadoboo
, mas está morrendo em favor delibnotify
.
OK, libnotify
nós vamos.
libnotify
vem com um binário que sabe como falar com o daemon de notificação (sim, essas notificações são exibidas por um daemon de segundo plano). O comando é notify-send
e é bastante trivial usar.
notify-send 'Meeting in 5 minutes' 'John from the <b>QA Team</b> just found a bug that should never had happened. Seriously, we are doing something wrong'
E isso exibirá a notificação. No entanto, torná-lo remoto é um pouco mais complexo. Supondo que você saiba que bob
é o usuário atualmente executando o Xorg na máquina krakatoa
e que o krakatoa tem libnotify instalado e executando o daemon de notificação do gnome, você pode fazer:
ssh bob@krakatoa \
notify-send 'Meeting in 5 minutes' \
'John from the <b>QA Team</b> just found a bug that should never had happened. Seriously, we are doing something wrong'
Mas encontrar cada usuário em cada máquina pode ser complicado. Você pode tentar criar um script que execute ps -afe | grep gnome
, encontre o usuário e execute su -u <user> DISPLAY=:0 notify-send ...
. Mas, novamente, você provavelmente não deve enviar ssh
solicitações como root
.
O Wiki do Arch tem uma lista de interfaces para libnotify
em vários idiomas. A partir daí, você pode criar seu próprio daemon, com seu próprio protocolo de comunicação para as mensagens de notificação. Por exemplo, uma vez que você é especificamente após o gnome, python Gobject
pode se encaixar na conta.
Em resumo:
-
Notificações acontecem no D-BUS;
-
Você não pode acessar diretamente o D-BUS remotamente;
-
Você pode usar
libnotify
para acessar o D-BUS de um programa sob o seu controle na máquina de destino.
Referências: