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

22

Я пытаюсь разработать несколько простых индикаторов для numlock / capslock, brigthness и т. Д. Как бы я мог создать индикаторы в python? Есть ли какие-нибудь учебные пособия, которые помогут мне написать мой первый appindicator (например, для приложений в быстро)? Какие-нибудь простые решения для быстрого запуска, как шаблоны?

DoGoDo
источник
Особенно аппендикаторы для pyqt5 или pygi и python3 (которые также будут работать вне единства).
Матео

Ответы:

12

Вы можете найти страницу для написания индикаторов приложения здесь:

Смотрите также:

На этой странице вы найдете ссылки на примеры в Python и документацию по API. В шаблоне ubuntu-приложения в Quickly должны быть примеры использования appindicators. Удачи!

Хорхе Кастро
источник
Спасибо! Я надеялся на более пошаговое руководство для моей первой попытки, но я справлюсь с тем, что есть. Я пока оставлю вопрос открытым на тот случай, если кто-нибудь узнает о других уроках.
DoGoDo
Вы найдете руководство по началу работы на developer.ubuntu.com/get-started - за дополнительной информацией обращайтесь в раздел ресурсов! developer.ubuntu.com/resources/app-developer-cookbook/unity
Дэвид Планелла
Спасибо, @DavidPlanella Я смотрел этот учебник, чтобы начать работу с обычными программами, но в нем даже не упоминаются индикаторы. Ни один не делает другую ссылку.
DoGoDo
Что вы не понимаете в примере здесь? Это простой, простой, рабочий пример (взят из ссылки в ответе) developer.ubuntu.com/resources/technologies/…
Тимо
2
Подобный или тот же вопрос здесь - askubuntu.com/questions/108035/…
fossfreedom
7

Я думаю, что написание индикаторов на Python, GIR и GTK3 , как упомянуто @fossfreedom, описывает, как создавать индикаторы для Unity. (Прочитайте это 1-е)

Я использую Ubuntu 14.04, Quickly 12.08.1. Это демо для полного рабочего примера сборки из шаблона Quickly.

  1. OP хочет просто индикатор (не полное приложение с графическим интерфейсом), поэтому давайте начнем с шаблона ubuntu-cli Quickly:

    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

    Исправить разрешения

    cd indicator-demo/
    chmod +x bin/indicator-demo

    Тест

    $ quickly run
    I'm launched and my args are:
  2. Есть хороший пример PYGI из Ubuntu Wiki: Индикаторы приложений . Это должно быть легко интегрировать.

    Открыть для редактирования:

    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'))

      Добавлять:

      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()
  3. Добавьте значки во вновь созданную папку данных:

    mkdir data

    Я скопировал некоторые значки из установленных пакетов, просто чтобы сделать пример:

    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
  4. Попробуй это:

    quickly run
  5. Создайте пакет и опубликуйте его:

    quickly package
    quickly share --ppa your-ppa

Заметки:

  1. Я не обновлял файл управления пакетами Debian, но зависимости были автоматически добавлены в сгенерированный DEB:

    Package: indicator-demo
    Version: 0.1
    Architecture: all
    Maintainer: UNKNOWN <UNKNOWN>
    Installed-Size: 57
    Depends: python (>= 2.7), python (<< 2.8), python:any (>= 2.7.1-0ubuntu2), gir1.2-gtk-3.0, gir1.2-appindicator3-0.1
    Section: python
    Priority: extra
    Description: UNKNOWN
     UNKNOWN

    Кроме того, ранее добавленные значки в папке данных были включены в пакет.

  2. Я сталкивался с подобным случаем прежде, Как добавить апплет состояния модификатора клавиатуры к панели Unity? , Ответ содержит пример / прототип индикатора клавиатуры с использованием libappindicator (но на языке программирования c).

    В libappindicator отсутствует важная функция, которая упрощает портирование других индикаторов рабочего стола. Значок можно загрузить только из пути. См. Ошибка # 812067 Необходим API: поддержка настройки иконки pixbuf

Ссылки:

  • Полная ссылка на API для libappindicator доступна в виде HTML в libappindicator-docпакете. Заглянуть/usr/share/gtk-doc/html/libappindicator/

    Обратите внимание, что он поддерживает добавление метки рядом со значком индикатора.

  • Ubuntu Wiki: Индикаторы приложений
  • Ubuntu Wiki: быстро

Смежные вопросы:

user.dz
источник
3

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

Prinz
источник