Документация для разработки расширения оболочки gnome?


22

Я хотел разработать некоторые расширения оболочки Gnome, так как они находятся только в javascript, однако я искал и документации практически нет, везде, где я смотрю, люди просто говорят использовать базовую документацию Gnome, но это НЕ помогает, я могу Не найдя никакой документации по импорту расширений или javascript api для разработки расширений, я попытался просмотреть некоторые учебные пособия (большинство из которых для Gnome 3.0, а не 3.2), но ничего не помогает.

Кто-нибудь знает, пишут ли они документацию для разработки расширений? Я бы очень хотел получить хорошую документацию ...


Вы уже видели эту страницу: live.gnome.org/GnomeShell/Extensions ?
Бенджамин

Аналогичный вопрос по SO: stackoverflow.com/questions/13107743/…
Уилф

Ответы:


7

Причина, по которой я не доволен демо-кодом и учебными пособиями, заключается в том, что они вводят несколько случайных импортов и никогда не объясняют, что они из себя представляют или как их использовать. Я строю свой собственный ответ, к которому другие могут добавить, чтобы люди действительно знали, какие функции они могут вызывать, что они могут импортировать и т. Д.

Сгенерирована документация для 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? Как насчет самоанализа?

4

Документация немного отстает, одним из потенциальных источников информации является информация о слесарном деле ОС , например, этот пост об обновлении расширений GNOME Shell для работы с версией 3.2

В зависимости от того, какую информацию вы хотите, вы можете попробовать список рассылки gnome.


1
Хотя это может теоретически ответить на вопрос, было бы предпочтительным включить здесь основные части ответа и предоставить ссылку для справки.
hhlp

3

Это пошаговое руководство по созданию расширений для GNOME 3.4 может помочь: https://live.gnome.org/GnomeShell/Extensions/StepByStepTutorial


1
В нем говорится: «[API] очень сложно из-за отсутствия документации ...» . Ну что ж.
детально

1
Я награждаю вас за вознаграждение, потому что на этой целевой странице много полезных ссылок :)
ловко
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.