¿Cómo escribir Appindicators en python?

23

Estoy intentando probar y desarrollar algunos indicadores simples, para numlock / capslock y brigthness, etc. ¿Cómo podría crear indicadores en python? ¿Hay algún tutorial que me ayude a escribir mi primer apunteador de aplicaciones (como para aplicaciones rápidamente)? ¿Alguna solución fácil para comenzar como plantillas rápidamente?

    
pregunta DoGoDo 11.11.2012 - 20:49

3 respuestas

13

Puede encontrar la página para escribir indicadores de aplicaciones aquí:

Ver también:

En esa página encontrará enlaces a ejemplos en Python y la documentación de la API. La plantilla de la aplicación ubuntu en Quickly debería tener ejemplos sobre el uso de los apunicadores. ¡Buena suerte!

    
respondido por el Jorge Castro 11.11.2012 - 20:57
7

Creo que Escribiendo indicadores con Python, GIR y GTK3 , como lo menciona @fossfreedom, cubre cómo crear indicadores para Unity. (Lea eso primero)

Estoy usando Ubuntu 14.04, Quickly 12.08.1. Esta es una demostración para una compilación completa de ejemplos de trabajo a partir de una plantilla Quickly.

  1. OP solo quiere un indicador (no una aplicación GUI completa) así que comencemos con la plantilla de ubuntu-cli Quickly:

    quickly create ubuntu-cli indicator-demo
    

    Puede generar un mensaje de error para la corrección de errores no publicados ( error # 1064110 ) en esta plantilla:

    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
    

    Reparar permisos

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

    Prueba

    $ quickly run
    I'm launched and my args are:
    
  2. Hay un bonito PYGI ejemplo de Ubuntu Wiki: Indicadores de aplicación . Debería ser fácil integrarlo.

    Abierto para editar:

    quickly edit
    
    • Modificar __init__.py , agregar módulos de necesidad de importaciones:

      from gi.repository import Gtk
      from gi.repository import AppIndicator3 as appindicator
      
    • En la función main() , entre:

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

      agregar:

      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. Agregar iconos a una carpeta de datos recién creada:

    mkdir data
    

    Copié algunos iconos de paquetes instalados, solo para dar el ejemplo:

    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. Pruébelo:

    quickly run
    
  5. Crear paquete y publicarlo:

    quickly package
    quickly share --ppa your-ppa
    

Notas:

  1. Bueno, no actualicé el archivo de control del paquete Debian, pero las dependencias se han agregado automáticamente al DEB generado:

    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
    

    Además, los iconos añadidos previamente en la carpeta de datos se incluyeron en el paquete.

  2. Me enfrenté a un caso similar antes, ¿Cómo agregar un applet de estado de modificador de teclado al panel de Unity? . La respuesta contiene un indicador de teclado de ejemplo / prototipo usando libappindicator (pero en el lenguaje de programación c).

    libappindicator carece de una función importante que facilite a los puertos otros indicadores de escritorios. El icono solo se puede cargar desde la ruta. Consulte el error # 812067 API necesaria: compatibilidad con la configuración del icono de pixbuf

Referencias:

Preguntas relacionadas:

respondido por el user.dz 28.06.2014 - 12:59
3

Este enlace le enseñará a crear un nuevo indicador básico de correo en python + unity, que funciona con GMail. Esto le proporcionará una base sólida en la estructura básica de un applet y le proporcionará un ejemplo real (aunque simplista) que puede ampliar fácilmente. Se pasa por el script final pieza por pieza.
This es otro programa python con comentarios en código, hecho usando Pygtk

    
respondido por el Prinz 28.06.2014 - 08:35

Lea otras preguntas en las etiquetas