07.02.2011 15:16
sagod — Пишем Indicator Applet для GNOME
В статье описывается процесс создания апплета-индикатора для GNOME.
Известно, что большинство апплетов для GNOME написаны на C, чем достигается некоторое преемущество в скорости работы перед программами на Perl/Python.
С другой стороны, писать на C сложнее, поэтому работать будем с Python.
Первым делом, нужно подключить библиотеку appindicator:
1 |
|
Затем создаем объект класса Indicator с тремя параметрами:1 - уникальный идентификатор приложения
2 - тип значка
3 - категория, указывающая на положение вашей программы на панели GNOME
Всего выбирать можно из 5 вариантов:CATEGORY_APPLICATION_STATUS
CATEGORY_COMMUNICATIONS
CATEGORY_SYSTEM_SERVICES
CATEGORY_HARDWARE
CATEGORY_OTHER
Нам подойдет первый:
1 |
indicator = appindicator.Indicator("amazing-applet", "indicator-messages", appindicator.CATEGORY_APPLICATION_STATUS)
|
Теперь установим статус индикатору: STATUS_ACTIVE - иконка отображена
STATUS_PASSIVE - иконка спрятана
STATUS_ATTENTION - иконка в состоянии привлечении внимания пользователя
1 |
|
Также добавим графические иконки для обоих состояний индикатора (активного и того, который привлекает внимание):
1 |
|
В переменной indicator_icon хранится путь до графического файла.
Не секрет, что у каждого апплета есть меню. И у нашего будет. Подключаем pygtk и gtk и создаем объект класса gtk:
1 |
|
Пункты создаются и добавляются следующим образом:
1 |
|
Отслеживаем нажатие на выбранный пункт меню так:
1 |
|
После того как меню сформировано, добавляем его к апплету:
1 |
|
Отлично, у нас уже есть хоть и бесполезное, но работающее приложение (засмотреть код).
Теперь сделаем возможность отправки сообщений в notify.
Добавляем новый пункт в меню и описываем действия, которые будут выполняться по нажатию:
1 |
icon = 'file://' + indicator_icon
|
Да, для работы pynotify надо подключить... pynotify.
Готово!
Смотрим что получилось у вас, сравниваем с моим кодом, ищем ошибки, пишем в комментариях вопросы.
пардон если был не прав, эта штука постоянно висит что ли? ( в отличие от libnotify?)
ага, заметил только знакомые слова из поста (=
индикаторы и уведомления вообще никак не связаны. это скорее иконки-в-трее-где-часы™
индикаторы и уведомления вообще никак не связаны. это скорее иконки-в-трее-где-часы™
именно так :)
перключение раскладки, пиджин, дропбокс, сообщения (значки на панели GNOME) - все это апплеты-индикаторы.
перключение раскладки, пиджин, дропбокс, сообщения (значки на панели GNOME) - все это апплеты-индикаторы.
Почему же велосипед?
Ваш пример никак не связан с Indicator Applet.
Ваш пример никак не связан с Indicator Applet.
notify-send -i=/path/to/icon SUBJ MESSAGE