68 votes

Documentation pour l'écriture d'extensions de GNOME Shell

On m'a demandé de personnaliser la disposition du bureau de GNOME 3. Apparemment, le moyen d'y parvenir est d'écrire une "extension".

J'ai réussi à faire certaines des choses que je voulais faire, mais je me sens complètement affamé d'informations. Je ne trouve aucune documentation utile partout . J'ai gaspillé des jours de ma vie à googler frénétiquement tous les termes de recherche imaginables dans une tentative désespérée de trouver des informations utiles.

Le site web de GNOME a des centaines d'extensions à télécharger. Ce ne sont pas des 3-liners triviaux, mais des morceaux de code sophistiqués. Il est difficile de croire que quiconque puisse les écrire sans documentation expliquant comment le faire.

S'il vous plaît, quelqu'un peut-il me dire où se trouve la documentation actuelle ? Jusqu'à présent, le mieux que j'ai pu faire est de démonter des extensions existantes en essayant de trouver la commande magique qui fait la partie spécifique qui m'intéresse. (Pas une tâche facile !)

Noms des commandes, chemins des objets, programmes d'exemple, tout ce qui est serait utile !

82voto

Lukas Knuth Points 14042

Je m'y suis récemment penché. La documentation est généralement peu abondante ou obsolète. Voici quelques sources qui m'ont aidé à démarrer (et à développer) :

Comme la documentation est pratiquement indisponible (ou à jour), vous devrez faire ce qui suit beaucoup de la lecture des sources. J'ai lié les sources de gnome-shell ci-dessus (la partie JavaScript) qui est un bon début lorsque vous plongez dans des parties qui ne sont pas couvertes par la documentation officielle (qui est la chose la plus complète que vous trouverez).

Ce qui est aussi particulièrement utile, c'est de vérifier extensions.gnome.org pour les extensions qui font des choses similaires à ce que vous voulez créer, et regardez leurs sources (la plupart d'entre elles sont open-source sur GitHub ou Bitbucket. Vous pouvez aussi les installer et trouver les sources sous ~/.local/share/gnome-shell/extensions/ ).

Lorsque vous cherchez quelque chose à utiliser ou plus de documentation sur une fonction particulière, vous pouvez également consulter les manuels des liaisons dans différentes langues (bien que les paramètres et les valeurs de retour puissent ne pas correspondre).


Enfin, voici quelques conseils de débogage :

LookingGlass n'est pas particulièrement utile. Il ne montre qu'une ligne d'une exception (la description) et seulement si elles se produisent au moment du démarrage (lorsque votre extension est lancée pour la première fois).

Pour obtenir des StackTraces complets et des exceptions d'exécution, consultez le site Web de la Commission européenne. ~/.xsession-errors -fichier. Il pourrait être très long et gonflé. J'utilise ceci pratique script pour le lire :

# Grabs the last session-errors from the current X11 session.
# This includes full Stack-Trace of gnome-shell-extension errors.
# See https://live.gnome.org/GnomeShell/Extensions/StepByStepTutorial#lookingGlass
tail -n100 ~/.cache/gdm/session.log | less

Note que depuis Gnome 3.6, si vous utilisez gdm comme gestionnaire d'affichage, le journal de session actuel est le fichier ~/.cache/gdm/session.log .

Sur certaines distros plus récentes utilisant systemd, vous pouvez obtenir les journaux d'erreurs avec :

journalctl -f /usr/bin/gnome-session

Pour débogage de la partie préfs de votre extension, vous pouvez lancer les préférences en utilisant le bouton gnome-shell-extension-prefs -à partir d'un terminal, pour voir toute sortie d'exception sur la console (vous pouvez également appeler l'outil comme suit gnome-shell-extension-prefs [uuid] pour afficher directement les préférences de vos extensions).

Étant donné qu'il n'existe pas actuellement de véritable moyen de déboguer avec des points d'arrêt (il en existe, mais c'est délicat ), vous pouvez journal sur la console pour une vérification rapide, utilisez le print() -fonction. Vous verrez la sortie mentionnée ci-dessus (soit dans le fichier sessions-error, soit dans le terminal lors du démarrage de la fonction gnome-shell-extension-prefs -outil).


Bien qu'il soit un peu difficile d'y accéder, le cadre d'extension est assez puissant. Avoir amusant !


J'ai écrit un Blog-Post avec un peu plus de détails qui peut être consulté ici : Créer des extensions Gnome-Shell

0 votes

Il est également possible que les journaux de gnome-session se trouvent dans ~/.cache/upstart/gnome-session-GNOME.log (par exemple, sur Ubuntu 14.04).

13voto

omid Points 76

Une liste exhaustive de références peut être consultée sur le site Web de la Commission européenne. Développeur Gnome - Référence API page.

J'ai utilisé les éléments suivants pour mon extension, mais votre utilisation peut varier :

  • GTK+ 3
    GTK+ est la principale bibliothèque utilisée pour construire les interfaces utilisateur dans les applications GNOME. Elle fournit des contrôles d'interface utilisateur et des rappels de signaux pour contrôler les interfaces utilisateur.

  • GDK 3
    GDK est une couche intermédiaire qui isole GTK+ des détails du système de fenêtrage.

  • Clutter
    Clutter est une bibliothèque basée sur GObject pour la création d'interfaces graphiques rapides et visuellement riches.

  • Introspection de l'objet GO
    GObject Introspection s'efforce de fournir une couche intermédiaire entre les bibliothèques C (basées sur GObject) et les liaisons de langage.

  • Shell
    Manuel de référence du Shell

  • St
    St - Boîte à outils Shell - est la boîte à outils personnalisée du Shell GNOME, basée sur Clutter, qui définit des acteurs utiles. Certains de ces acteurs, tels que [StBoxLayout](https://developer.gnome.org/st/stable/StBoxLayout.html) et [StBin](https://developer.gnome.org/st/stable/StBin.html) mettre en œuvre diverses options de mise en page.

  • Spécifications du thème Icon
    Ce site freedesktop.org décrit une façon commune de stocker des thèmes d'icônes.

NOTE : Ces deux derniers sont très utiles pour trouver les paramètres des éléments visuels !

  • PyGTK
    PyGTK est GTK+ pour Python. Cette référence contient un chapitre pour chaque module PyGTK pour Python (qui correspond à la bibliothèque GTK+ sous-jacente) contenant les descriptions des classes.

  • PyGObject
    PyGObject est un module d'extension Python qui donne un accès propre et cohérent à l'ensemble de la plate-forme logicielle GNOME grâce à l'utilisation de l'introspection GObject. Plus précisément, il s'agit de liaisons Python pour GLib, GObject, GIO et GTK+.
    Cette référence contient un chapitre pour chaque module PyGObject contenant les descriptions des classes.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X