Debian jessie, primus и 32-битные приложения

Что ж, уведомления Gnome используют D-BUS для передачи сообщений. Спецификация gnome описывает, как использовать классы org.freedesktop.Notifications. * , и содержит множество советов по форматированию. В общем, это HTML-формат.

Тем не менее, вы абсолютно не можете разговаривать с D-BUS на другом компьютере удаленно. Давайте даже не будем начинать с того, сколько дыр в безопасности откроется.

Тем не менее, вы всегда можете иметь программу на целевой машине, которая будет принимать сообщения и взаимодействовать с D-BUS локально, уже находясь там.

Есть две опции, которые являются оболочкой вокруг org.freedesktop.Notifications. * и значительно упрощают написание программ:

  • libnotify : это почти де-факто стандарт для создания уведомлений. , поддерживает не только gnome, но и несколько других.

  • notify-sharp-3 : как ни странно это может звучать, это функциональность на основе C # с открытым исходным кодом, основанная на нескольких спецификациях уведомлений. В какой-то момент у него даже был свой собственный язык под названием boo , но он вроде как отмирает в пользу libnotify .

Хорошо, libnotify пошли.

libnotify поставляется с двоичным файлом, который знает, как взаимодействовать с демоном уведомлений (да, эти уведомления отображаются фоновым демоном). Команда notify-send довольно проста в использовании.

notify-send 'Meeting in 5 minutes' 'John from the QA Team just found a bug that should never had happened.  Seriously, we are doing something wrong'

И это отобразит уведомление. Тем не менее, сделать его удаленным немного сложнее. Предполагая, что вы знаете, что bob - это пользователь, который в настоящее время запускает Xorg на машине krakatoa , и что у krakatoa установлен libnotify и запущен демон gnome notify, вы можете сделать:

ssh bob@krakatoa \
    notify-send 'Meeting in 5 minutes' \
    'John from the QA Team just found a bug that should never had happened.  Seriously, we are doing something wrong'

Но найти каждого пользователя на каждой машине может быть сложно. Вы можете попробовать создать сценарий, который будет выполнять ps -afe | grep gnome , найдите пользователя и запустите su -u DISPLAY =: 0 notify-send ... . Но опять же, вам, вероятно, не следует отправлять запросы ssh как root в первую очередь.

Arch wiki содержит список интерфейсов к libnotify на нескольких языках.Оттуда вы можете создать своего собственного демона со своим собственным протоколом связи для уведомлений. Например, поскольку вы специально ищете gnome, python Gobject может как раз соответствовать вашим требованиям.

Вкратце:

  • Уведомления происходят на D-BUS;

  • Вы не можете получить прямой удаленный доступ к D-BUS;

  • Вы можете использовать libnotify для доступа к D-BUS из программы под ваш контроль на целевой машине.

Ссылки:

2
01.08.2015, 20:43
0 ответов

Теги

Похожие вопросы