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 ...

KoRnKloWn
źródło
Czy widziałeś już tę stronę: live.gnome.org/GnomeShell/Extensions ?
Benjamin
Podobne pytanie na SO: stackoverflow.com/questions/13107743/...
Wilf

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ą?
obrzydliwie
źródło
4

Dokumentacja jest nieco opóźniona, jednym z potencjalnych źródeł informacji jest przemyślenia hydraulika systemu operacyjnego , np. Ten post dotyczący aktualizacji rozszerzeń powłoki GNOME do pracy z wersją 3.2

W zależności od potrzebnych informacji możesz wypróbować listę mailingową gnome.

Pantera
źródło
1
Chociaż teoretycznie może to odpowiedzieć na pytanie, lepiej byłoby zawrzeć tutaj istotne części odpowiedzi i podać odnośnik.
hhlp