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é global
qui 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.display
objet , 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 Clutter
existe déjà. Mais alors:
const MyClutter = imports.gi.Clutter;
... ne fonctionnera pas non plus; 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à, 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.js
et 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?