Как написать Appindicators в python?

Я знаю, что на этот вопрос ответили много времени, но вот мой собственный ответ:)

Основное различие между «системным лотком» и апплетами «Индикатор» заключается в том, что «иконки в лотке» являются приложением (поэтому один значок для каждого приложения), а апплеты индикаторов - по заданию (поэтому один значок на одну задачу).

Системный лоток Пример:

Запустите Banshee и Rhythmbox, и вы получите

Индикатор апплета Пример:

Banshee и Rythmbox должны интегрироваться с теми же индикаторами, с различными значками , опциями и использование

Очевидно, что вы можете злоупотреблять аппликаторами индикаторов (например, StackExchange или Ubuntuone: P делает их по одному для каждого приложения. Это неправильно).

1
задан 12 November 2012 в 03:50

2 ответа

Я думаю, что написание индикаторов с 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?
7
ответ дан 25 May 2018 в 04:29

Эта ссылка научит вас создавать базовый новый индикатор почты в python + единстве, который работает с GMail. Это даст вам прочную основу в базовой структуре апплета, обеспечивая при этом реальный (хотя и упрощенный) пример, который вы можете легко расширить. Он проходит финальный сценарий по частям. Это еще одна программа python с комментариями в коде, сделанная с помощью Pygtk

3
ответ дан 25 May 2018 в 04:29

Другие вопросы по тегам:

Похожие вопросы: