Содержание
*notify*. Варианты реализации уведомлений системы.
121224 sfslinux@gmail.com
В процессе работы, возникают ситуации, требующие уведомления пользователя об определенных событиях. Описанные ниже методики, теоретически, можно применять в любом Linux с любым WM (Менеджер_окон).
Стандартные демоны
Libnotify - это простой способ отображения уведомлений и информации в маленьком диалоговом окне. Он используется во многих программах с открытым исходным кодом, например evolution, pidgin и т.д., и поддерживает как Gtk+, так и Qt. Кроме этого, libnotify не зависит от используемого оконного менеджера. Отправка сообщения:
notify-send "Заголовок" "Сообщение" -i Путь_к_иконке
Демоны естественно постоянно находятся в памяти. Расход не большой , но он есть…
- Есть иконки.
- Можно менять, местоположение, цвет, шрифт
Gnome
notify-osd. Самый тяжелый: 348k.
На мой взгляд ничем не лучше xfce4-notifyd. Актуально применять только в Gnome.
XFCE
xfce4-notifyd. 168k.
В более свежей версии 0.2 ничего интересного для себя не нашел.
GUI конфигуратор убрал. /etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-notifyd.xml можно отредактировать вручную или написать gtkdialog интерфейс.
Скрипты
- Не являются демонами.
- Ресурсоемкость и объем минимальны.
- Как правило, имеются в системе и применяются для других целей
В WM, где стандартом являются notify-osd и notifyd - лучше использовать их. Иначе можно получить нестандартные проблемы.
gtkdialog-splash
В различных вариантах, иногда под именем yaf-splash, используется в PuppyLinux. Основан на gtkdialog и будет работать везде, где он есть.
- Вывод в правой части экрана (стандартное место) проблематичен или невозможен.
- Выводит иконки.
conky
Использовать conky для сообщений придумал сам. Стало интересно, неужели никому подобное в голову не приходило… Поискал. Приходило: 1, 2, 3
- Можно весь мониторинг трея перенести в conky.
- Перекомпиляция (conky-) под мою конфигурацию позволила избавиться от тяжелых библиотек типа imlib и уменьшить размер. Пришлось пожертвовать выводом иконок. Там где imlib уже есть (Openbox) - лучше использовать стандартный conky. Если иконки хочется, возможно есть смысл подумать о notifyd.
- Проблемы вывода справа нет.
- Можно сделать рамку и т.п.
- Можно менять цвет, шрифт.
- Можно использовать переменные conky.
Утилиты
Xdialog
Вряд ли будет лучше gtkdialog.
gxmessage
Иконок нет. Цвет есть. Вывод только по центру или под курсором. На gnome, xfce абсолютно не похоже.
xpupsay
Есть выбор иконок, места выводв и прочие настройки (см. xpupsay –help). www
Итог
Написал sh скрипт /usr/local/bin/notify-send. Скриншот (conky - уведомление находится в верхнем правом углу)
- Будет работать в любом линуксе с conky >=1.8.0. lua не использовал.
- Название, ключи и расположение такие, чтобы можно было использовать как заглушку для оригинального бинарника notify-send (его переименовал в notify-send.bin).
Автоматически определяет наличие в системе
- notify-osd
- notifyd
- xpupsay
- conky
- gxmessage
Использует первый найденный.
notify-osd и notifyd можно подключить модулем. Ссылки выше.
Работоспособность модулей проверена в LupuRus520 (нужна одна lib из debian), PuppuRus21x, SFSl, CDL-R1.1(только notifyd)
Изменение цвета для conky (ключи запуска notify-osd):
- -i info - зеленый цвет
- -i error - красный
- прочее - желтый
Из всего описанного по критериям: возможности-ресурсоемкость, мне понравился xpupsay. Следующий: notifyd.