Como escrever Appindicators em python?

23

Estou tentando desenvolver alguns indicadores simples, como numlock / capslock e brigthness, etc. Como eu poderia criar indicadores em python? Existem alguns tutoriais que me ajudaram a escrever meu primeiro appindicator (como para aplicativos rapidamente)? Quaisquer soluções fáceis para começar como modelos rapidamente?

    
por DoGoDo 11.11.2012 / 21:49

3 respostas

13

Você pode encontrar a página para escrever indicadores de aplicativos aqui:

Veja também:

Nessa página, você encontrará links para exemplos em Python e a documentação da API. O template do aplicativo ubuntu no Quickly deve ter exemplos sobre o uso de appindicators. Boa sorte!

    
por Jorge Castro 11.11.2012 / 21:57
7

Eu acho Escrevendo indicadores com Python, GIR e GTK3 , como mencionado por @fossfreedom, aborda como criar indicadores para Unity. (Leia isso primeiro)

Estou usando o Ubuntu 14.04, Rapidamente 12.08.1. Esta é a demonstração para um exemplo completo de construção a partir de um modelo do Quickly.

  1. OP quer apenas um indicador (não é um aplicativo GUI completo), então vamos começar com o template ubuntu-cli Rapidamente:

    quickly create ubuntu-cli indicator-demo
    

    Ele pode gerar uma mensagem de erro para correção de bug não liberada ( bug # 1064110 ) neste modelo:

    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
    

    Corrigir permissões

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

    Teste

    $ quickly run
    I'm launched and my args are:
    
  2. Existe um bom exemplo PYGI de Ubuntu Wiki: Indicadores de Aplicação . Deve ser fácil integrá-lo.

    Aberto para edição:

    quickly edit
    
    • Modifique __init__.py , adicione importações de módulos necessários:

      from gi.repository import Gtk
      from gi.repository import AppIndicator3 as appindicator
      
    • Na função main() , entre:

      print _("I'm launched and my args are: %s") % (" ".join(args))
      logging.debug(_('end of prog'))
      

      adicione:

      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. Adicione ícones a uma pasta de dados recém-criada:

    mkdir data
    

    Eu copiei alguns ícones dos pacotes instalados, apenas para fazer o exemplo:

    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. Teste:

    quickly run
    
  5. Crie um pacote e publique-o:

    quickly package
    quickly share --ppa your-ppa
    

Notas:

  1. Bem, eu não atualizei o arquivo de controle do pacote debian, mas as dependências foram adicionadas automaticamente ao DEB gerado:

    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
    

    Além disso, os ícones adicionados anteriormente na pasta de dados foram incluídos no pacote.

  2. Eu enfrentei um caso semelhante antes, Como adicionar um applet de estado do modificador de teclado ao painel do Unity? . A resposta contém um exemplo / indicador de teclado protótipo usando libappindicator (mas na linguagem de programação c).

    O libappindicator não possui um recurso importante que facilite a portabilidade de outros indicadores de desktops. O ícone pode ser carregado apenas do caminho. See Bug # 812067 API necessária: suporte a configurações de ícones do pixbuf

Referências:

Questões relacionadas:

por user.dz 28.06.2014 / 14:59
3

Este link ensinará você a criar um novo indicador básico de e-mail em python + unity, que funciona com o GMail. Isso lhe dará uma base sólida na estrutura básica de um applet, fornecendo um exemplo real (embora simplista) que você pode estender facilmente. Ele passa pelo script final, pedaço por pedaço. This é outro programa python com comentários no código, feito usando Pygtk

    
por Prinz 28.06.2014 / 10:35