Wie schreibe ich Appindicators in Python?

22

Ich versuche, einige einfache Indikatoren zu entwickeln, z. B. für Numlock / Capslock und Helligkeit. Wie würde ich Indikatoren in Python erstellen? Gibt es Tutorials, die mich durch das Schreiben meines ersten Indikators führen (wie bei Apps, die schnell eingehen)? Irgendwelche einfachen Lösungen zum Starten wie schnell Vorlagen?

DoGoDo
quelle
Insbesondere Appindikatoren für pyqt5 oder pygi und python3 (das funktioniert auch außerhalb von unity).
Mateo

Antworten:

12

Die Seite zum Schreiben von App-Indikatoren finden Sie hier:

Siehe auch:

Auf dieser Seite finden Sie Links zu Beispielen in Python und der API-Dokumentation. Die Ubuntu-Anwendungsvorlage in Quickly sollte Beispiele für die Verwendung von Indikatoren enthalten. Viel Glück!

Jorge Castro
quelle
Vielen Dank! Ich hatte mir für meinen ersten Versuch eine schrittweise Anleitung erhofft, aber ich werde mit dem auskommen, was ist. Ich werde die Frage vorerst offen halten, falls jemand von anderen Tutorials weiß.
DoGoDo
Ein Tutorial für den Einstieg finden Sie unter developer.ubuntu.com/get-started. Weitere Inhalte finden Sie im Abschnitt Ressourcen. developer.ubuntu.com/resources/app-developer-cookbook/unity
David Planella
Danke, @DavidPlanella Ich habe mir dieses Tutorial angesehen, um mit normalen Programmen zu beginnen, aber es erwähnt nicht einmal Indikatoren. Weder tut der andere Link.
DoGoDo
Was verstehst du nicht über das Beispiel hier? Es ist ein einfaches, funktionierendes Beispiel (aus dem Link in der Antwort entnommen) developer.ubuntu.com/resources/technologies/…
Timo
2
Ähnliche oder die gleiche Frage hier - askubuntu.com/questions/108035/…
fossfreedom
7

Ich denke, das Schreiben von Indikatoren mit Python, GIR und GTK3 , wie von @fossfreedom erwähnt, beschreibt, wie Indikatoren für Unity erstellt werden. (Lesen Sie das 1.)

Ich benutze Ubuntu 14.04, Quickly 12.08.1. Dies ist eine Demo für ein vollständiges Arbeitsbeispiel, das aus einer Quickly-Vorlage erstellt wurde.

  1. OP will nur Indikator (nicht vollständige GUI-App), also lasst uns mit Ubuntu-Cli beginnen. Schnelles Template:

    quickly create ubuntu-cli indicator-demo

    Möglicherweise wird eine Fehlermeldung für die unveröffentlichte Fehlerbehebung ( Bug-Nr. 1064110 ) in dieser Vorlage ausgegeben :

    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

    Festgelegte Berechtigungen

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

    Prüfung

    $ quickly run
    I'm launched and my args are:
  2. Es gibt ein schönes PYGI- Beispiel aus dem Ubuntu-Wiki: Anwendungsindikatoren . Es sollte einfach zu integrieren sein.

    Zum Bearbeiten öffnen:

    quickly edit
    • Ändern Sie __init__.py, fügen Sie Bedarfsmodulimporte hinzu:

      from gi.repository import Gtk
      from gi.repository import AppIndicator3 as appindicator
    • In der main()Funktion zwischen:

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

      hinzufügen:

      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. Hinzufügen von Symbolen zu einem neu erstellten Datenordner:

    mkdir data

    Ich habe einige Symbole aus installierten Paketen kopiert, um nur das Beispiel zu machen:

    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. Probier es aus:

    quickly run
  5. Paket erstellen und veröffentlichen:

    quickly package
    quickly share --ppa your-ppa

Anmerkungen:

  1. Nun, ich habe die Debian-Paketsteuerungsdatei nicht aktualisiert, aber die Abhängigkeiten wurden automatisch zu der generierten DEB hinzugefügt:

    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

    Außerdem wurden die zuvor im Datenordner hinzugefügten Symbole in das Paket aufgenommen.

  2. Ich hatte zuvor einen ähnlichen Fall: Wie füge ich dem Unity-Bedienfeld ein Applet zum Ändern des Tastaturstatus hinzu? . Die Antwort enthält ein Beispiel / einen Prototyp-Tastaturindikator mit libappindicator (jedoch in der Programmiersprache c).

    In libappindicator fehlt eine wichtige Funktion, mit der andere Desktops einfach angezeigt werden können. Das Symbol kann nur vom Pfad geladen werden. Siehe Bug # 812067 API benötigt: Unterstützung für die Einstellung von Pixbuf-Symbolen

Verweise:

  • Die vollständige API-Referenz für libappindicator ist als HTML im libappindicator-docPaket enthalten. Hinein sehen/usr/share/gtk-doc/html/libappindicator/

    Beachten Sie, dass das Hinzufügen von Beschriftungen mit einem Nebenindikatorsymbol unterstützt wird.

  • Ubuntu Wiki: Anwendungsindikatoren
  • Ubuntu Wiki: Schnell

Verwandte Fragen:

user.dz
quelle
3

Über diesen Link erfahren Sie, wie Sie in Python + Unity einen grundlegenden neuen E-Mail-Indikator erstellen, der mit GMail funktioniert. Auf diese Weise erhalten Sie eine solide Grundlage für die Grundstruktur eines Applets und erhalten ein reales (wenn auch vereinfachtes) Beispiel, das Sie problemlos erweitern können. Es geht Stück für Stück durch das endgültige Drehbuch.
Dies ist ein weiteres Python-Programm mit Kommentaren im Code, das mit erstellt wurde Pygtk

Prinz
quelle