Je voulais développer des extensions de Gnome Shell car elles ne sont qu'en javascript. Cependant, j’ai cherché et il n’existe pratiquement aucune documentation. Partout où je regarde, les gens me disent simplement d’utiliser la documentation de base de Gnome, mais cela n’aide en rien. ne trouvant aucune documentation pour les importations d'extensions, ni aucun type d'API javascript pour le développement d'extensions, j'ai essayé de parcourir certains des didacticiels (dont la plupart concernent Gnome 3.0, et non 3.2), mais rien n'y fait.
Est-ce que quelqu'un sait s'il est en train d'écrire de la documentation pour le développement d'extensions? J'aimerais vraiment avoir une bonne documentation ...
La raison pour laquelle je ne suis pas satisfait du code de démonstration et des didacticiels est qu’ils introduisent un grand nombre d’importations aléatoires sans jamais expliquer en quoi ils consistent ni comment les utiliser. Je construis ma propre réponse que d'autres peuvent ajouter, afin que les gens sachent réellement 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 ne pouvais pas trouver la plupart des choses que j'ai vues dans divers tutoriels, exemples et extensions publiées.
La seule documentation réellement fiable est la source Gnome Shell elle-même. Il n'y a tout simplement aucun autre moyen à jour ou complet de savoir ce qui est disponible.
Ces deux points de départ sont particulièrement intéressants:
La source C montre qu’il existe un objet important appelé global
qui n’a pas besoin d’être importé, et permet d’accéder à des éléments tels que le gestionnaire de fenêtres (y compris les associations de touches), les informations de session, les écrans disponibles, etc. . Voici la source:
Je voulais savoir comment utiliser l'objet _global.display
_ , 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:
imports.gi.Clutter
_)imports.gi.GLib
_)imports.gi.St
_)En général, vous pouvez consulter = documentation de référence pour les divers composants de Gnome pour rechercher d'autres importations.
Une note sur le miroir: Il y a quelques bizarreries à propos de l'utilisation de ces importations dans le miroir - j'ai perdu beaucoup de temps à essayer de tester des choses à la volée. Par exemple:
_const Clutter = imports.gi.Clutter;
_
... ne fonctionnera pas, car Clutter
existe déjà. Mais alors:
_const MyClutter = imports.gi.Clutter;
_
... aussi ne fonctionnera pas; MyClutter
n'est pas défini et ne peut pas être utilisé. Tu dois faire:
_MyClutter = imports.gi.Clutter;
_
Bien sûr, dans ce cas, Clutter
existe déjà, il n'est donc 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-le à l’esprit.
Mainloop
? Ceci est importé dans main.js
et semble avoir des fonctions liées à la boucle principale de GLib. Y at-il de la documentation pour cela?imports.misc
_? Il semble y avoir des choses vraiment utiles, comme ExtensionUtils
- qu'est-ce que c'est?La documentation est un peu en retard, une source d’information potentielle est Réflexions d’un plombier OS , par ex. cet article sur mise à jour des extensions de GNOME Shell pour fonctionner avec la version 3.2
Selon les informations que vous souhaitez, vous pouvez essayer la liste de diffusion gnome.
Ce tutoriel pas à pas pour créer des extensions pour gnome 3.4 peut vous aider: https://live.gnome.org/GnomeShell/Extensions/StepByStepTutorial