Come scrivere Appindicators in python?

23

Sto cercando di sviluppare alcuni semplici indicatori, per numlock / capslock e brigthness, ecc. Come farei per creare indicatori in python? Ci sono tutorial che mi aiutano a scrivere il mio primo appindicatore (come per le app in fretta)? Qualche facile soluzione per iniziare come modelli veloci?

    
posta DoGoDo 11.11.2012 - 21:49
fonte

3 risposte

13

Puoi trovare la pagina per scrivere gli indicatori delle app qui:

Vedi anche:

In quella pagina troverai i link agli esempi in Python e la documentazione dell'API. Il modello di applicazione di Ubuntu in Quickly dovrebbe avere esempi sull'utilizzo di appindicatori. Buona fortuna!

    
risposta data Jorge Castro 11.11.2012 - 21:57
fonte
7

Penso Indicatori di scrittura con Python, GIR e GTK3 , come menzionato da @fossfreedom, illustra come creare indicatori per Unity. (Leggi prima)

Sto usando Ubuntu 14.04, Quickly 12.08.1. Questa è una demo per un esempio di lavoro completo compilato da un modello Quickly.

  1. OP vuole solo un indicatore (non completa l'interfaccia grafica) quindi iniziamo con ubuntu-cli Quickly template:

    quickly create ubuntu-cli indicator-demo
    

    Può generare un messaggio di errore per la correzione di bug non rilasciati ( bug # 1064110 ) in questo modello:

    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
    

    Correggi le autorizzazioni

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

    Prova

    $ quickly run
    I'm launched and my args are:
    
  2. C'è un bell'esempio PYGI da Wiki di Ubuntu: Indicatori di applicazione . Dovrebbe essere facile da integrare.

    Apri per modifica:

    quickly edit
    
    • Modifica __init__.py , aggiungi le importazioni dei moduli necessari:

      from gi.repository import Gtk
      from gi.repository import AppIndicator3 as appindicator
      
    • Nella funzione main() , tra:

      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()
      
  3. Aggiungi icone a una cartella di dati appena creata:

    mkdir data
    

    Ho copiato alcune icone dai pacchetti installati, solo per fare l'esempio:

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

    quickly run
    
  5. Crea pacchetto e pubblicalo:

    quickly package
    quickly share --ppa your-ppa
    

Note:

  1. Bene, non ho aggiornato il file di controllo del pacchetto debian, ma le dipendenze sono state aggiunte automaticamente al DEB generato:

    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
    

    Inoltre, le icone aggiunte in precedenza nella cartella dei dati sono state incluse nel pacchetto.

  2. Ho già affrontato un caso simile, Come aggiungere un'applet dello stato del modificatore di tastiera al pannello Unity? . La risposta contiene un esempio / prototipo di indicatore della tastiera usando libappindicator (ma nel linguaggio di programmazione c).

    libappindicator manca di una caratteristica importante che rende facile alle porte altri indicatori desktop. L'icona può essere caricata solo dal percorso. Vedi Bug # 812067 Sono necessarie le API: supporto per l'impostazione delle icone di pixbuf

References:

Domande correlate:

risposta data user.dz 28.06.2014 - 14:59
fonte
3

Questo link ti insegnerà a creare un nuovo indicatore di posta base in python + unity, che funziona con GMail. Questo ti darà una solida base nella struttura di base di un'applet fornendo un esempio reale (anche se semplicistico) che puoi facilmente estendere. Passa allo script finale pezzo per pezzo.
This è un altro programma python con commenti nel codice, realizzato usando Pygtk

    
risposta data Prinz 28.06.2014 - 10:35
fonte

Leggi altre domande sui tag