Я хотел разработать некоторые расширения оболочки Gnome, так как они находятся только в javascript, однако я искал и документации практически нет, везде, где я смотрю, люди просто говорят использовать базовую документацию Gnome, но это НЕ помогает Я не могу найти какую-либо документацию для импорта расширений или какой-либо javascript api для разработки расширений, я попытался просмотреть некоторые учебники (большинство из которых для Gnome 3.0, а не 3.2), но ничего не помогает.
Кто-нибудь знает, пишут ли они документацию для разработки расширений? Я бы очень хотел получить хорошую документацию ...
Причина я не доволен демонстрационным кодом и учебными руководствами, состоит в том, что они представляют набор случайного импорта и никогда не объясняют, что они или как использовать их. Я создаю свой собственный ответ, к которому могут добавить другие, так, чтобы люди могли на самом деле знать то, что функционирует, они могут звонить, что они могут импортировать и т.д.
Существует сгенерированная документация для Gnome Shell, но это несколько неполно — я не мог найти большинство вещей, которые я видел в различных учебных руководствах, примерах и опубликовал расширения.
Единственная действительно надежная документация является Gnome сам источник Shell. Просто нет никакого другого актуального или полного способа знать то, что доступно.
Эти две начальных точки особенно хороши:
Источник C показывает, что существует важный названный объект global
это не должно быть импортировано и обеспечивает доступ к вещам как менеджер окон (включая привязки клавиш), информация о сессии, экраны, доступные и другие такие вещи. Вот источник:
Я хотел знать, как использовать global.display
объект и на данный момент лучшая документация - обеспеченный Alan Knowles.
Другие вещи могут быть импортированы через привязку самоанализа GObject, например:
imports.gi.Clutter
)imports.gi.GLib
)imports.gi.St
)В целом можно просмотреть справочную документацию для различных компонентов Gnome для нахождения другого импорта.
Примечание по зеркалу: существуют некоторые причуды об использовании этого импорта в зеркале, хотя — я потратил впустую много времени, просто пытаясь проверить вещи на лету. Например:
const Clutter = imports.gi.Clutter;
... не будет работать, потому что Clutter
уже существует. Но затем:
const MyClutter = imports.gi.Clutter;
... также не будет работать; MyClutter
не определено и не может использоваться. Необходимо сделать:
MyClutter = imports.gi.Clutter;
Конечно, в этом случае Clutter
уже существует, таким образом, это не действительно необходимо. Но так как это не документируется, что и уже не находится в пространстве имен зеркала, при попытке импортировать что-то и иметь эти проблемы, имеете в виду его.
Mainloop
? Это импортируется в main.js
и, кажется, имеет функции, связанные с Бойким основным циклом. Есть ли документация для этого?imports.misc
? Это, кажется, имеет некоторые действительно полезные вещи там, как ExtensionUtils
— что это?Этот пошаговый учебник по созданию расширений для GNOME 3.4 может помочь: https://live.gnome.org/GnomeShell/Extensions/StepByStepTutorial
Документация немного запаздывает, один потенциальный источник информации - Рассказы о сантехнике ОС , например. этот пост об обновлении расширений GNOME Shell для работы с версией 3.2
В зависимости от того, какую информацию вы хотите, вы можете попробовать список рассылки gnome.