Я знаю, что на этот вопрос ответили много времени, но вот мой собственный ответ:)
Основное различие между «системным лотком» и апплетами «Индикатор» заключается в том, что «иконки в лотке» являются приложением (поэтому один значок для каждого приложения), а апплеты индикаторов - по заданию (поэтому один значок на одну задачу).
Системный лоток Пример:
Запустите Banshee и Rhythmbox, и вы получите
Индикатор апплета Пример:
Banshee и Rythmbox должны интегрироваться с теми же индикаторами, с различными значками , опциями и использование
Очевидно, что вы можете злоупотреблять аппликаторами индикаторов (например, StackExchange или Ubuntuone: P делает их по одному для каждого приложения. Это неправильно).
Я думаю, что написание индикаторов с Python, GIR и GTK3, как упоминалось в @fossfreedom, описывает, как создавать индикаторы для Unity. (Прочтите, что 1-й)
Я использую Ubuntu 14.04, Quickly 12.08.1. Это демонстрация для полного рабочего примера сборки из шаблона Quickly.
OP хочет только индикатор (не полное приложение GUI), поэтому давайте начнем с быстрого шаблона ubuntu-cli:quickly create ubuntu-cli indicator-demo
Это может вызвать сообщение об ошибке для исправления ошибки (ошибка # 1064110) в этом шаблоне: Creating project directory indicator-demo
Creating bzr repository and committing
Launching your newly created project!
Traceback (most recent call last):
...
OSError: [Errno 13] Permission denied
ERROR: create command failed
Aborting
Fix permissions cd indicator-demo/
chmod +x bin/indicator-demo
Test $ quickly run
I'm launched and my args are:
В Ubuntu Wiki: Application Indicators есть хороший пример PYGI. Его легко интегрировать. Открыть для редактирования: quickly edit
Изменить __init__.py, добавить импорт модулей импорта: from gi.repository import Gtk
from gi.repository import AppIndicator3 as appindicator
В функции main() между: print _("I'm launched and my args are: %s") % (" ".join(args))
logging.debug(_('end of prog'))
add: ind = appindicator.Indicator.new_with_path (
_("Indicator demo for Quickly"),
"indicator-demo-icon-normal",
appindicator.IndicatorCategory.APPLICATION_STATUS,
indicator_democonfig.get_data_path())
ind.set_status (appindicator.IndicatorStatus.ACTIVE)
ind.set_attention_icon ("indicator-demo-icon-attention")
# create a menu
menu = Gtk.Menu()
# create one item
menu_items = Gtk.MenuItem(_("Quit"))
menu.append(menu_items)
# this is where you would connect your menu item up with a function:
menu_items.connect("activate", Gtk.main_quit )
# show the item
menu_items.show()
ind.set_menu(menu)
Gtk.main()
Добавить значки во вновь созданную папку данных: mkdir data
I скопировал некоторые значки из установленных пакетов, просто чтобы сделать пример: cp /usr/share/icons/ubuntu-mono-dark/status/22/indicator-messages.svg data/indicator-demo-icon-normal.svg
cp /usr/share/icons/ubuntu-mono-dark/status/22/indicator-messages-new.svg data/indicator-demo-icon-attention.svg
Проверить его: quickly run
Создать пакет и опубликовать его: quickly package
quickly share --ppa your-ppa
Примечания:
OP хочет только индикатор (не полный GUI-приложение), так что давайте начнем с шаблона QuickBuilder QuickTable:quickly create ubuntu-cli indicator-demo
Это может вызвать сообщение об ошибке для невыпущенного исправления ошибок (ошибка # 1064110) в этом шаблоне: Creating project directory indicator-demo
Creating bzr repository and committing
Launching your newly created project!
Traceback (most recent call last):
...
OSError: [Errno 13] Permission denied
ERROR: create command failed
Aborting
Fix permissions cd indicator-demo/
chmod +x bin/indicator-demo
Тест $ quickly run
I'm launched and my args are:
OP хочет только индикатор (не полный GUI-приложение), поэтому давайте начнем с шаблона быстрой настройки ubuntu-cli:
libappindicator не имеет важной функции, которая упрощает перенос других индикаторов рабочих столов. Значок может быть загружен только с пути. См. Bug # 812067 Необходимый API: поддержка значка значка pixbufПеред тем, как раньше, я столкнулся с аналогичным случаем, как добавить апплет состояния модификатора клавиатуры на панель Unity ?. Ответ содержит пример / индикатор клавиатуры прототипа с использованием libappindicator (но на языке программирования c).
Полная ссылка API для libappindicator доступна как HTML в пакете libappindicator-doc. Посмотрите в /usr/share/gtk-doc/html/libappindicator/ Обратите внимание, что он поддерживает добавление метки рядом с значком индикатора. Ubuntu Wiki: Индикаторы приложений Ubuntu Wiki: БыстроПримечания:
Полная ссылка API для libappindicator доступна как HTML в libappindicator-doc пакет. Посмотрите в /usr/share/gtk-doc/html/libappindicator/ Обратите внимание, что он поддерживает добавление метки рядом с значком индикатора. Как создать индикаторы Unity?Эта ссылка научит вас создавать базовый новый индикатор почты в python + единстве, который работает с GMail. Это даст вам прочную основу в базовой структуре апплета, обеспечивая при этом реальный (хотя и упрощенный) пример, который вы можете легко расширить. Он проходит финальный сценарий по частям. Это еще одна программа python с комментариями в коде, сделанная с помощью Pygtk