Documentation pour le développement d'extension de shell gnome?


22

Je voulais développer des extensions Gnome Shell car elles sont juste en javascript, mais j'ai cherché et il n'y a pratiquement aucune documentation, partout où je regarde les gens disent simplement d'utiliser la documentation de base de Gnome, mais cela n'aide pas, je peux ne trouvant aucune documentation pour les importations d'extensions, ou tout type d'api javascript pour le développement d'extensions, j'ai essayé de parcourir certains des tutoriels (dont la plupart sont pour Gnome 3.0, pas 3.2), mais rien n'y fait.

Quelqu'un sait-il s'il est en train d'écrire de la documentation pour le développement d'extensions? J'aimerais vraiment une bonne documentation ...


Avez-vous déjà vu cette page: live.gnome.org/GnomeShell/Extensions ?
Benjamin

Question similaire sur SO: stackoverflow.com/questions/13107743/…
Wilf

Réponses:


7

La raison pour laquelle je ne suis pas satisfait du code de démonstration et des didacticiels est qu'ils introduisent un tas d'importations aléatoires et n'expliquent jamais ce qu'ils sont ni comment les utiliser. Je construis ma propre réponse à laquelle d'autres peuvent s'ajouter, afin que les gens puissent réellement savoir quelles fonctions ils peuvent appeler, ce qu'ils peuvent importer, etc.

Il existe une documentation générée pour Gnome Shell , mais elle est quelque peu incomplète - je n'ai pas pu trouver la plupart des choses que j'ai vues dans divers didacticiels, exemples et extensions publiées.

La seule documentation vraiment fiable est la source Gnome Shell elle-même. Il n'y a tout simplement pas d'autre moyen à jour ou complet de savoir ce qui est disponible.

Ces deux points de départ sont particulièrement bons:

La source C montre qu'il existe un objet important appelé globalqui n'a pas besoin d'être importé, et donne accès à des choses comme le gestionnaire de fenêtres (y compris les raccourcis clavier), les informations de session, les écrans disponibles et d'autres choses de ce genre. Voici la source:

Je voulais savoir comment utiliser l' global.displayobjet , et pour l'instant la meilleure documentation est celle fournie par Alan Knowles .

D'autres éléments peuvent être importés via les liaisons d'introspection GObject, par exemple:

En général, vous pouvez consulter la documentation de référence des différents composants Gnome pour trouver d'autres importations.

Une note sur le miroir: Il y a cependant quelques bizarreries à propos de l'utilisation de ces importations dans le miroir - j'ai perdu beaucoup de temps à essayer de tester les choses à la volée. Par exemple:

const Clutter = imports.gi.Clutter;

... ne fonctionnera pas, car Clutterexiste déjà. Mais alors:

const MyClutter = imports.gi.Clutter;

... ne fonctionnera pas non plus; MyCluttern'est pas défini et ne peut pas être utilisé. Tu dois faire:

MyClutter = imports.gi.Clutter;

Bien sûr, dans ce cas Clutterexiste déjà, donc ce n'est pas vraiment nécessaire. Mais comme il n'est pas documenté ce qui est et n'est pas déjà dans l'espace de noms du miroir, si vous essayez d'importer quelque chose et que vous rencontrez ces problèmes, gardez cela à l'esprit.

Questions restantes:

  • Qu'est-ce que c'est Mainloop? Ceci est importé dans main.jset semble avoir des fonctions liées à la boucle principale GLib. Existe-t-il une documentation à ce sujet?
  • Qu'est-ce que c'est imports.misc? Il semble y avoir des choses vraiment utiles, comme ExtensionUtils- qu'est-ce que c'est?
  • Comment utilisez-vous DBus? Et l'introspection?

4

La documentation est un peu en retard, une source potentielle d'information est la réflexion d'un plombier OS , par exemple ce post sur la mise à jour des extensions GNOME Shell pour fonctionner avec la version 3.2

Selon les informations que vous souhaitez, vous pouvez essayer la liste de diffusion gnome.


1
Bien que cela puisse théoriquement répondre à la question, il serait préférable d'inclure ici les parties essentielles de la réponse et de fournir le lien de référence.
hhlp

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.