Der Grund, warum ich mit dem Demo-Code und den Tutorials nicht zufrieden bin, ist, dass sie eine Menge zufälliger Importe einführen und niemals erklären, was sie sind oder wie sie verwendet werden. Ich konstruiere meine eigene Antwort, die andere ergänzen können, damit die Leute tatsächlich wissen, welche Funktionen sie aufrufen können, was sie importieren können usw.
Es wurde eine Dokumentation für Gnome Shell erstellt , die jedoch etwas unvollständig ist - ich konnte die meisten Dinge, die ich in verschiedenen Tutorials, Beispielen und veröffentlichten Erweiterungen gesehen habe, nicht finden.
Die einzige wirklich zuverlässige Dokumentation ist die Gnome-Shell-Quelle selbst. Es gibt einfach keine andere aktuelle oder vollständige Methode, um zu wissen, was verfügbar ist.
Diese beiden Ansatzpunkte sind besonders gut:
Die C-Quelle zeigt, dass es ein wichtiges Objekt gibt, das aufgerufen wird global
, das nicht importiert werden muss, und bietet Zugriff auf den Fenstermanager (einschließlich Tastenkombinationen), die Sitzungsinformationen, die verfügbaren Bildschirme und andere solche Dinge. Hier ist die Quelle:
Ich wollte wissen, wie man das global.display
Objekt benutzt , und im Moment ist die beste Dokumentation die von Alan Knowles .
Andere Dinge können über die GObject-Introspection-Bindungen importiert werden, zum Beispiel:
Im Allgemeinen können Sie in der Referenzdokumentation der verschiedenen Gnome-Komponenten nach weiteren Importen suchen.
Ein Hinweis zum Spiegel: Es gibt jedoch einige Macken bei der Verwendung dieser Importe im Spiegel - ich habe viel Zeit verschwendet, nur um Dinge im laufenden Betrieb zu testen. Beispielsweise:
const Clutter = imports.gi.Clutter;
... wird nicht funktionieren, da Clutter
bereits vorhanden. Aber dann:
const MyClutter = imports.gi.Clutter;
... geht auch nicht; MyClutter
ist undefiniert und kann nicht verwendet werden. Du musst:
MyClutter = imports.gi.Clutter;
Natürlich in diesem Fall Clutter
bereits, so dass es nicht wirklich notwendig ist. Da jedoch nicht dokumentiert ist, was sich im Looking-Glass-Namespace befindet und was nicht, sollten Sie dies berücksichtigen, wenn Sie versuchen, etwas zu importieren und diese Probleme haben.
Verbleibende Fragen:
- Was ist
Mainloop
? Dies wird importiert main.js
und scheint Funktionen zu haben, die sich auf die GLib-Hauptschleife beziehen. Gibt es dafür Unterlagen?
- Was ist
imports.misc
? Es scheint einige wirklich nützliche Dinge zu haben, wie ExtensionUtils
- was ist das?
- Wie benutzt man DBus? Was ist mit Selbstbeobachtung?