Это старая версия документа.
Содержание
Desktop notifications. Сообщения системы.
121224, 140721 sfslinux@gmail.com
- Многие программы, например evolution, pidgin, NM, transmission , используют Libnotify - простой способ отображения уведомлений и информации в маленьком диалоговом окне.
- При написании скриптов, возникают ситуации, требующие уведомления пользователя об определенных событиях или требуется интерактивность (вопрос-ответ). Пример
Далее описаны варианты вывода этих сообщений
Теория
Демоны
Управление
Запуск
Происходит автоматически, при наличии /usr/share/dbus-1/services/org.название_сервиса.Notifications.service
Отправка сообщения
notify-send "Заголовок" "Сообщение" -i Путь_к_иконке
Демоны естественно постоянно находятся в памяти. Расход не большой , но он есть…
- Есть иконки (если демон поддерживает).
- Можно менять задержку, иконку
Стандартные демоны
Gnome
- В отличие от прочих нельзя менять положение вывода сообщений (только верхний правый угол). 2 одновременных сообщения будут показаны по очереди
- Только с ним возможны трюки:
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
- Что-то среднее между mate и gnome
dunst
- Легковесный
- Версия 1.2: есть вариант с закругленными краями (gtk)
- Без gtk зависимостей
cow-notify
- Осуществляет привязку dbus к xcowsay и любым скриптам и утилитам.
- Очень легкий
- Поддерживает notify-send . Передает 3 параметра : продолжительность popup, заголовок, тело сообщения
osdsh
- Осуществляет привязку dbus к osd_cat
sind
- Осуществляет привязку dbus к dzen
notification-thing
Утилиты
gtkdialog
- Поддержка gtk2 и 3
- Иконки, шрифты
- Максимальный функционал. Сложный синтаксис. Тяжело отлаживать
yad
- Иконки, шрифты, трей
- Поддержка gtk2 и 3
- Проще gtkdialog, но менее функционален
Xdialog
- gtkdialog функциональнее
gxmessage
Иконок нет. Цвет есть. Вывод только по центру или под курсором. На gnome, xfce абсолютно не похоже.
xcowsaw (xpupsay)
- Только popup (всплывающее сообщение)
- Есть выбор иконок, места выводв и прочие настройки (см. xpupsay –help).
osd_cat (aosd_cat)
- Только текст. Только popup (всплывающее сообщение)
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.
Итог: ntf
- В стандартном окружении лучше использовать штатные средства.
- В нестандартном - наименее ресурсоемкий popup -
xcowsay + cow-notifydunst - Наиболее оптимальный по соотношению ресурсы\функциолал : dunst
Написал sh скрипт ntf.
- Будет работать в любом линуксе |(в зависимостях yad и gtkdialog - оба есть gtk2 и gtk3)
- Определяет наличие в системе демонов и выводит popup через них
- Упрощает написание интерактивных диалогов : вопрос, выбор из списка
- Активно использую в PRA