Ответ 1
Я сам недавно закопался в этом. Документация обычно скудная или устаревшая. Вот несколько источников, которые помогли мне начать (и через разработку):
- Основные вещи
- Основные вещи по разработке
- Пошаговое руководство (Gnome 3.4)
- Неофициальная документация по привязкам JavaScript многих библиотек
- Источники привязок JavaScript в gnome-shell
- Объяснение компонентов набора St (Shell Toolkit) Ui -tool.
- Некоторые неофициальные рекомендации по расширению на extensions.gnome.org
Поскольку документация почти недоступна (или актуальна), вам нужно много читать исходных текстов. Я связал источники gnome-shell выше (часть JavaScript), что является хорошим началом при погружении в части, которые не описаны в Официальной документации (которая является наиболее полной вещью, которую вы найдете).
Также особенно полезно проверить extensions.gnome.org на наличие расширений, которые делают вещи, аналогичные тем, которые вы хотите создать, и посмотрите на их источники (большинство из них с открытым исходным кодом на GitHub или Bitbucket. Вы также можете установить их и найти исходники в ~/.local/share/gnome-shell/extensions/
).
При поиске чего-либо для использования или дополнительной документации по конкретной функции вы также можете обратиться к руководствам по привязкам на разных языках (хотя параметры и возвращаемые значения могут не совпадать).
И последнее, но не менее важное, вот несколько советов по отладке:
LookingGlass не особо помогает. Он показывает только одну строку исключения (описание) и только в том случае, если они возникают во время запуска (при первом запуске вашего расширения).
Для получения полной информации о StackTraces и исключениях времени выполнения обратитесь к ~/.xsession-errors
-file. Это может быть очень долго и раздутым. Я использую этот удобный скрипт, чтобы прочитать его:
# Grabs the last session-errors from the current X11 session.
# This includes full Stack-Trace of gnome-shell-extension errors.
# See https://live.gnome.org/GnomeShell/Extensions/StepByStepTutorial#lookingGlass
tail -n100 ~/.cache/gdm/session.log | less
Обратите внимание, что начиная с Gnome 3.6, если вы используете
gdm
качестве диспетчера отображения, текущий журнал сеанса представляет собой файл~/.cache/gdm/session.log
.
В некоторых новых дистрибутивах, использующих systemd, вы можете получить журналы ошибок с:
journalctl -f /usr/bin/gnome-session
Для отладки prefs-части вашего расширения вы можете запустить настройки, используя gnome-shell-extension-prefs
-tool из терминала, чтобы увидеть любой вывод-исключение на консоли (вы также можете вызвать такой инструмент, как gnome-shell-extension-prefs [uuid]
, чтобы напрямую показать ваши настройки расширений).
Поскольку в настоящее время нет реального способа отладки с помощью точек останова (есть, но это сложно), вы можете войти в консоль для быстрой проверки, используя print()
-function. Вы увидите вывод, как упомянуто выше (либо в файле ошибок сессий, либо в терминале при запуске gnome-shell-extension-prefs
-tool).
Несмотря на то, что это может быть немного трудно понять, структура расширения довольно мощная. Удачи!
Я написал пост в блоге с более подробной информацией, которую можно найти здесь: Создание расширений Gnome-Shell