Comment écrire des Appindicators en python?

22

Je cherche à développer des indicateurs simples, pour numlock / capslock et brigthness, etc. Comment pourrais-je créer des indicateurs en python? Existe-t-il des didacticiels qui me guideront dans la rédaction de mon premier indicateur (comme pour les applications rapidement)? Des solutions simples pour démarrer comme des modèles rapides?

DoGoDo
la source
Surtout des indicateurs pour pyqt5 ou pygi et python3 (qui fonctionneront également en dehors de l'unité).
Mateo

Réponses:

12

Vous pouvez trouver la page pour écrire des indicateurs d'application ici:

Voir également:

Sur cette page, vous trouverez des liens vers des exemples en Python et la documentation de l'API. Le modèle d'application ubuntu dans Quickly devrait avoir des exemples sur l'utilisation des indicateurs. Bonne chance!

Jorge Castro
la source
Merci! J'espérais un tutoriel plus détaillé pour mon premier essai, mais je me contenterai de ce qui est. Je garderai la question ouverte pour le moment au cas où quelqu'un connaîtrait d'autres tutoriels.
DoGoDo
Vous trouverez un tutoriel pour vous aider à démarrer sur developer.ubuntu.com/get-started - consultez également la section des ressources pour plus de contenu! developer.ubuntu.com/resources/app-developer-cookbook/unity
David Planella
Merci, @DavidPlanella J'ai regardé ce tutoriel pour commencer avec les programmes normaux, mais il ne mentionne même pas d'indicateurs. Ni l'autre lien.
DoGoDo
Que ne comprenez-vous pas sur l'exemple ici? Il s'agit d'un exemple simple et fonctionnel (tiré du lien dans la réponse) developer.ubuntu.com/resources/technologies/…
Timo
2
Similaire ou la même question ici - askubuntu.com/questions/108035/…
fossfreedom
7

Je pense que l' écriture d'indicateurs avec Python, GIR et GTK3 , comme mentionné par @fossfreedom, couvre comment créer des indicateurs pour Unity. (Lisez ce 1er)

J'utilise Ubuntu 14.04, rapidement 12.08.1. Ceci est une démo pour un exemple complet de construction à partir d'un modèle Quickly.

  1. OP veut juste un indicateur (application GUI incomplète) alors commençons avec le modèle ubuntu-cli Quickly:

    quickly create ubuntu-cli indicator-demo

    Il peut déclencher un message d'erreur pour une correction de bogue non publiée ( bogue # 1064110 ) dans ce modèle:

    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

    Autorisations de correctifs

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

    Tester

    $ quickly run
    I'm launched and my args are:
  2. Il y a un bel exemple PYGI d' Ubuntu Wiki: Indicateurs d'application . Il devrait être facile de l'intégrer.

    Ouvert pour modification:

    quickly edit
    • Modifier __init__.py, ajouter des importations de modules nécessaires:

      from gi.repository import Gtk
      from gi.repository import AppIndicator3 as appindicator
    • Dans la main()fonction, entre:

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

      ajouter:

      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. Ajoutez des icônes à un dossier de données nouvellement créé:

    mkdir data

    J'ai copié quelques icônes des packages installés, juste pour faire l'exemple:

    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. Essaye-le:

    quickly run
  5. Créez un package et publiez-le:

    quickly package
    quickly share --ppa your-ppa

Remarques:

  1. Eh bien, je n'ai pas mis à jour le fichier de contrôle du paquet Debian, mais les dépendances ont été ajoutées automatiquement au DEB généré:

    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

    En outre, les icônes précédemment ajoutées dans le dossier de données ont été incluses dans le package.

  2. J'ai rencontré un cas similaire auparavant, comment ajouter une applet d'état de modificateur de clavier au panneau Unity? . La réponse contient un exemple / indicateur de clavier prototype utilisant libappindicator (mais dans le langage de programmation c).

    libappindicator n'a pas de fonctionnalité importante qui facilite le portage d'autres indicateurs de bureau. L'icône ne peut être chargée qu'à partir du chemin. Voir Bogue n ° 812067 API nécessaire: prise en charge des paramètres d'icône pixbuf

Les références:

  • La référence complète de l'API pour libappindicator est disponible au format HTML dans le libappindicator-docpackage. Regarder dans/usr/share/gtk-doc/html/libappindicator/

    Notez qu'il prend en charge l'ajout d'une étiquette à côté d'une icône d'indicateur.

  • Ubuntu Wiki: Indicateurs d'application
  • Ubuntu Wiki: rapidement

Questions connexes:

user.dz
la source
3

Ce lien vous apprendra à créer un nouvel indicateur de base de courrier en python + unité, qui fonctionne avec GMail. Cela vous donnera une base solide dans la structure de base d'une applet tout en fournissant un exemple du monde réel (bien que simpliste) que vous pouvez facilement étendre. C'est passer par le script final morceau par morceau.
Ceci est un autre programme python avec des commentaires dans le code, fait en utilisant Pygtk

Prinz
la source