Dokumentacja dotycząca rozwoju rozszerzenia powłoki gnome?


22

Chciałem opracować niektóre rozszerzenia Gnome Shell, ponieważ są one tylko w javascript, ale szukałem i jest praktycznie zerowa dokumentacja, wszędzie wyglądam, ludzie mówią tylko, że używają podstawowej dokumentacji Gnome, ale to nie pomaga, mogę nie znalazłem żadnej dokumentacji dotyczącej importu rozszerzeń ani jakiegokolwiek interfejsu API javascript do opracowywania rozszerzeń, próbowałem przejrzeć niektóre samouczki (większość z nich dotyczy Gnome 3.0, a nie 3.2), ale nic nie pomaga.

Czy ktoś wie, czy trwa pisanie dokumentacji do opracowania rozszerzenia? Bardzo chciałbym trochę dobrej dokumentacji ...


Czy widziałeś już tę stronę: live.gnome.org/GnomeShell/Extensions ?
Benjamin

Odpowiedzi:


7

Powodem, dla którego nie jestem zadowolony z kodu demonstracyjnego i samouczków, jest to, że wprowadzają one losowy import i nigdy nie wyjaśniają, czym są ani jak ich używać. Tworzę własną odpowiedź, do której inni mogą dodawać, aby ludzie wiedzieli, jakie funkcje mogą wywoływać, co mogą importować itp.

Wygenerowano dokumentację dla Gnome Shell , ale jest ona nieco niekompletna - nie znalazłem większości rzeczy, które widziałem w różnych samouczkach, przykładach i opublikowanych rozszerzeniach.

Jedyną naprawdę wiarygodną dokumentacją jest samo źródło Gnome Shell. Po prostu nie ma innego aktualnego ani pełnego sposobu, aby dowiedzieć się, co jest dostępne.

Te dwa punkty początkowe są szczególnie dobre:

Źródło C pokazuje, że istnieje ważny obiekt o nazwie global, który nie musi być importowany, i zapewnia dostęp do takich rzeczy, jak menedżer okien (w tym skróty klawiszowe), informacje o sesji, dostępne ekrany i inne tego typu rzeczy. Oto źródło:

Chciałem wiedzieć, jak korzystać z global.displayobiektu , a na razie najlepsza dokumentacja jest dostarczona przez Alana Knowlesa .

Inne rzeczy można zaimportować za pomocą powiązań introspekcji GObject, na przykład:

Ogólnie rzecz biorąc, możesz przejrzeć dokumentację referencyjną różnych komponentów Gnome, aby znaleźć inne importowane elementy.

Uwaga na temat lustra: Są jednak pewne dziwactwa związane z używaniem tych importów w lustrze - traciłem dużo czasu, próbując przetestować rzeczy w locie. Na przykład:

const Clutter = imports.gi.Clutter;

... nie będzie działać, ponieważ Clutterjuż istnieje. Ale wtedy:

const MyClutter = imports.gi.Clutter;

... też nie będzie działać; MyClutterjest niezdefiniowany i nie można go używać. Musisz zrobić:

MyClutter = imports.gi.Clutter;

Oczywiście w tym przypadku Clutterjuż istnieje, więc nie jest tak naprawdę konieczne. Ale ponieważ nie udokumentowano tego, co jest i nie znajduje się już w przestrzeni nazw lustra, jeśli spróbujesz coś zaimportować i masz te problemy, pamiętaj o tym.

Pozostałe pytania:

  • Co to jest Mainloop? Jest on importowany main.jsi wydaje się, że ma funkcje związane z główną pętlą GLib. Czy jest na to dokumentacja?
  • Co to jest imports.misc? Wygląda na to, że zawiera kilka naprawdę przydatnych rzeczy, na przykład ExtensionUtils- co to jest?
  • Jak korzystać z DBus? Co z introspekcją?


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.