Причина, по которой я не доволен демо-кодом и учебными пособиями, заключается в том, что они вводят несколько случайных импортов и никогда не объясняют, что они из себя представляют или как их использовать. Я строю свой собственный ответ, к которому другие могут добавить, чтобы люди действительно знали, какие функции они могут вызывать, что они могут импортировать и т. Д.
Сгенерирована документация для Gnome Shell , но она несколько неполная - я не смог найти большинство вещей, которые видел в различных руководствах, примерах и опубликованных расширениях.
Единственной действительно надежной документацией является сам исходный код Gnome Shell. Просто нет другого актуального или полного способа узнать, что доступно.
Эти две отправные точки особенно хороши:
Источник C показывает, что существует важный объект с именем global
, который не нужно импортировать, и предоставляет доступ к таким вещам, как диспетчер окон (включая привязки клавиш), информацию о сеансе, доступные экраны и другие подобные вещи. Вот источник:
Я хотел знать, как использовать global.display
объект , и на данный момент лучшая документация предоставлена Аланом Ноулзом .
Другие вещи могут быть импортированы через привязки самоанализа GObject, например:
В общем, вы можете просмотреть справочную документацию по различным компонентам Gnome, чтобы найти другие варианты импорта.
Примечание о зеркале: Есть некоторые причуды в использовании этого импорта в зеркале - я потратил много времени, просто пытаясь проверить вещи на лету. Например:
const Clutter = imports.gi.Clutter;
... не будет работать, потому что Clutter
уже существует. Но потом:
const MyClutter = imports.gi.Clutter;
... также не будет работать; MyClutter
не определено и не может быть использовано. Ты должен сделать:
MyClutter = imports.gi.Clutter;
Конечно, в этом случае Clutter
уже существует, поэтому в этом нет необходимости. Но так как не задокументировано, что находится и не находится в пространстве имен зазеркалье, если вы попытаетесь что-то импортировать и у вас возникнут эти проблемы, имейте это в виду.
Остальные вопросы:
- Что такое
Mainloop
? Он импортирован main.js
и, похоже, имеет функции, связанные с главным циклом GLib. Есть ли для этого документация?
- Что такое
imports.misc
? Кажется, там есть действительно полезные вещи, например ... ExtensionUtils
что это?
- Как вы используете DBus? Как насчет самоанализа?