Это старая версия документа.


Desktop notifications. Сообщения системы.

121224, 140721 sfslinux@gmail.com

  • Многие программы, например evolution, pidgin, NM, transmission , используют Libnotify - простой способ отображения уведомлений и информации в маленьком диалоговом окне.
  • При написании скриптов, возникают ситуации, требующие уведомления пользователя об определенных событиях или требуется интерактивность (вопрос-ответ). Пример

Далее описаны варианты вывода этих сообщений

Теория

Демоны

Управление

Запуск

Происходит автоматически, при наличии /usr/share/dbus-1/services/org.название_сервиса.Notifications.service

Отправка сообщения

notify-send "Заголовок" "Сообщение" -i Путь_к_иконке

Демоны естественно постоянно находятся в памяти. Расход не большой , но он есть…

  • Есть иконки (если демон поддерживает).
  • Можно менять задержку, иконку

Стандартные демоны

Gnome

notify-osd.

notify-send "Volume" -i notification-audio-volume-low -h int:value:30 -h string:x-canonical-private-synchronous:
notify-send "Brightness" -i notification-display-brightness-high -h int:value:101 -h string:x-canonical-private-synchron

XFCE

xfce4-notifyd

  • Иконки, шрифты, положение, кнопки
  • Самый легкий из стандартных
  • GUI конфигуратор

Mate

Enlightenment

  • Отдельным модулем выделить тяжело
  • Иконки, шрифты, положение
  • Конфигуратор, темы

Нестандартные демоны

Осуществляет привязку dbus к скриптам и утилитам. Т.е. привязывает их к стандарту Libnotify

notification-daemon

dunst

cow-notify

  • Осуществляет привязку dbus к xcowsay и любым скриптам и утилитам.
  • Очень легкий
  • Поддерживает notify-send . Передает 3 параметра : продолжительность popup, заголовок, тело сообщения

osdsh

sind

notification-thing

wired

Утилиты

gtkdialog

  • Поддержка gtk2 и 3
  • Иконки, шрифты
  • Максимальный функционал. Сложный синтаксис. Тяжело отлаживать

yad

  • Иконки, шрифты, трей
  • Поддержка gtk2 и 3
  • Проще gtkdialog, но менее функционален

Xdialog

gxmessage

Иконок нет. Цвет есть. Вывод только по центру или под курсором. На gnome, xfce абсолютно не похоже.

xcowsaw (xpupsay)

  • Только popup (всплывающее сообщение)
  • Есть выбор иконок, места выводв и прочие настройки (см. xpupsay –help).

osd_cat (aosd_cat)

zenity

Более тяжелый вариант, аналогичный yad

dzen

dmenu

Скрипты

  • Не поддерживают dbus. Приложения не смогут использовать их через libnotify
  • Не являются демонами. Ресурсоемкость и объем минимальны.
  • Как правило, имеются в системе и применяются для других целей

gtkdialog-splash

  • В различных вариантах, иногда под именем yaf-splash, используется в PuppyLinux. Основан на gtkdialog и будет работать везде, где он есть.
  • Вывод в правой части экрана (стандартное место) проблематичен или невозможен.
  • Выводит иконки.

conky

Использовать conky для сообщений придумал сам. Стало интересно, неужели никому подобное в голову не приходило… Поискал. Приходило: 1, 2, 3

  • Можно весь мониторинг трея перенести в conky.
  • Перекомпиляция (conky-) под мою конфигурацию позволила избавиться от тяжелых библиотек типа imlib и уменьшить размер. Пришлось пожертвовать выводом иконок. Там где imlib уже есть (Openbox) - лучше использовать стандартный conky. Если иконки хочется, возможно есть смысл подумать о notifyd.
  • Проблемы вывода справа нет.
  • Можно сделать рамку и т.п.
  • Можно менять цвет, шрифт.
  • Можно использовать переменные conky.

Документация по конфигурации conky: 1, 2, 3

Итог: ntf

  • В стандартном окружении лучше использовать штатные средства.
  • В нестандартном - наименее ресурсоемкий popup - xcowsay + cow-notify dunst
  • Наиболее оптимальный по соотношению ресурсы\функциолал : dunst

Написал sh скрипт ntf.

  • Будет работать в любом линуксе |(в зависимостях yad и gtkdialog - оба есть gtk2 и gtk3)
  • Определяет наличие в системе демонов и выводит popup через них
  • Упрощает написание интерактивных диалогов : вопрос, выбор из списка
  • Активно использую в PRA
Печать/экспорт