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:
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ż Clutter
już istnieje. Ale wtedy:
const MyClutter = imports.gi.Clutter;
... też nie będzie działać; MyClutter
jest niezdefiniowany i nie można go używać. Musisz zrobić:
MyClutter = imports.gi.Clutter;
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:
- Co to jest
Mainloop
? Jest on importowany main.js
i 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ą?