Dokumentation für die Entwicklung von Gnome-Shell-Erweiterungen?


22

Ich wollte einige Gnome-Shell-Erweiterungen entwickeln, da sie nur in Javascript sind, aber ich habe nachgeschaut und es gibt praktisch keine Dokumentation. Überall, wo ich hinschaue, sagen die Leute nur, dass sie die grundlegende Gnome-Dokumentation verwenden sollen, aber das hilft NICHT, das kann ich Ich habe keine Dokumentation für den Import von Erweiterungen oder irgendeine Art von Javascript-API für die Erweiterungsentwicklung gefunden. Ich habe versucht, einige der Tutorials durchzusehen (die meisten sind für Gnome 3.0, nicht für 3.2), aber nichts hilft.

Weiß jemand, ob er Dokumentationen für die Erweiterungsentwicklung erstellt? Ich würde wirklich gerne eine gute Dokumentation haben ...


Haben Sie diese Seite schon gesehen: live.gnome.org/GnomeShell/Extensions ?
Benjamin

Antworten:


7

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.displayObjekt 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 Clutterbereits vorhanden. Aber dann:

const MyClutter = imports.gi.Clutter;

... geht auch nicht; MyClutterist 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.jsund 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?

4

Die Dokumentation ist etwas verzögert, eine mögliche Informationsquelle sind Musings eines Betriebssystem-Installateurs , z. B. dieser Beitrag zur Aktualisierung der GNOME-Shell-Erweiterungen auf Version 3.2

Abhängig von den gewünschten Informationen können Sie die Gnome-Mailingliste ausprobieren.


1
Während dies theoretisch die Frage beantworten mag, wäre es vorzuziehen , die wesentlichen Teile der Antwort hier aufzunehmen und den Link als Referenz bereitzustellen.
hhlp

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.