LINUX.ORG.RU

Подскажите простейший способ отправить уведомление «графическим» пользователям.

 ,


0

1

Есть самописный демом, который мониторит некоторые события и при их возникновении нужно отправить уведомление пользователям.

На компьютере, в общем случае, запущено несколько сеансов в том числе по ssh.

Нужно что бы все пользователи получили уведомление о событии, независимо от того каким образом они вошли в систему. Для консольных пользователей это сделать не сложно.

Вопрос как это попроще сделать для графических пользователей, в виде всплывающего окна и независимо от используемой оболочки.

Желательно что бы любой пользователь мог «закрыть» событие так что бы окошко уведомления закрылось у всех прочих пользователей.


Поищи про notifyd, думаю, это то, что нужно. А если хочешь в C - то про libnotify.

Meyer ★★★★★
()

Послать сообщение можно через write, «графические» пользователи тоже его получат.

«закрыть» событие так что бы окошко уведомления закрылось у всех прочих пользователей

А вот такое придётся писать самому, про стандартное ничего не слышал.

gremlin_the_red ★★★★★
()
Ответ на: комментарий от gremlin_the_red

«графические» пользователи тоже его получат.

Не получат, специально только что проверил.

nebularia

notify-send?

В продолжение к предыдущему. Ты хоть тонну сообщений посылай, если у юзера не запущен нотификатор (у меня, например, не запущен), то ничего он не получит! Разве что если сидит по ssh или в консольке - получит сообщения, посланные wall/write.

OnlyAsk
()
Ответ на: комментарий от OnlyAsk

А зачем отключать демон уведомлений? ССЗБ? Тогда надо по-другому ставить вопрос: «Как отправить сообщение горе-пользователю, который заблокировал все способы получения сообщений?»

anonymous
()
Ответ на: комментарий от anonymous

Что значит «зачем отключать»? Чтобы что-то отключить, надо его сначала включить. А я и не включал. Раньше пользовался notipy, но он уж слишком глюкавый.

OnlyAsk
()

Вопрос как это попроще сделать для графических пользователей, в виде всплывающего окна и независимо от используемой оболочки.

Можно использовать xmessage, gxmessage

SZT ★★★★★
()

Желательно что бы любой пользователь мог «закрыть» событие так что бы окошко уведомления закрылось у всех прочих пользователей.

Тогда надо какие-то костыли городить, которые б убивали эти всплывающие окошки от xmessage или gxmessage. KDialog еще есть например

SZT ★★★★★
()

To show GUI notifications:

  • notification server (most of desktop environments use their own implementations)
  • libnotify (Arch Linux, Fedora, openSUSE) or libnotify-bin (Debian GNU/Linux, Ubuntu)

Все полноценные ДЕ (гном мате кеды крыса циннамон) имееют включенный сервер уведомлений.

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

Решение - костыль: https://github.com/hakavlad/notify-send-root-wrapper - он сканирует /proc, находит залогиненных юзеров, находит нужные переменные, и отправляет уведомление всем залогиненным.

Юзать так:

# notify-send-root-wrapper --аргументы_для_нотифай-сенд 'title' 'body'
  • скрипт всасывает аргументы и передает в notify-send для уведомления всех.

Подобный подход может использоваться в erlyoom https://github.com/rfjakob/earlyoom/blob/master/contrib/notify_all_users.py

nohang для уведомления залогиненных использует аналогичный подход, только вместо отдельного процесса запускает тред в себе.

notify-send-root-wrapper писался давно и может быть не идеален. Попробуй. Есть вопросы или проблемы - пиши в issue в https://github.com/hakavlad/notify-send-root-wrapper

anonymous
()

Нужно что бы все пользователи получили уведомление о событии

если они сами выключили нотификатор, то не нужно

peregrine ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.