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 ...
development
gnome-shell-extension
KoRnKloWn
źródło
źródło
Odpowiedzi:
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.display
obiektu , a na razie najlepsza dokumentacja jest dostarczona przez Alana Knowlesa .Inne rzeczy można zaimportować za pomocą powiązań introspekcji GObject, na przykład:
imports.gi.Clutter
)imports.gi.GLib
)imports.gi.St
)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:
... nie będzie działać, ponieważ
Clutter
już istnieje. Ale wtedy:... też nie będzie działać;
MyClutter
jest niezdefiniowany i nie można go używać. Musisz zrobić:Oczywiście w tym przypadku
Clutter
już 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:
Mainloop
? Jest on importowanymain.js
i wydaje się, że ma funkcje związane z główną pętlą GLib. Czy jest na to dokumentacja?imports.misc
? Wygląda na to, że zawiera kilka naprawdę przydatnych rzeczy, na przykładExtensionUtils
- co to jest?źródło
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.
źródło
Ten samouczek krok po kroku dotyczący tworzenia rozszerzeń gnome 3.4 może pomóc: https://live.gnome.org/GnomeShell/Extensions/StepByStepTutorial
źródło