Как работать с Зазеркальем GNOME?

Я хочу приступить к разработке расширений для Gnome Shell, но я не могу понять, как я выполняю несколько задач в Looking Glass lg, чтобы на самом деле отлаживать свои вещи.

  1. Когда я набираю global.log("hi"); в LG, меня возвращает r(...) = undefined. Почему?
  2. Когда я хочу отладить расширение, которое не загружается, как мне это сделать?
    Было бы неплохо узнать, почему расширение не может быть загружено.
    Я пробовал Main.ExtensionSystem.loadExtension(), но он возвращает undefined независимо от того, Я даю ему строку имени расширения или объект расширения.
  3. Где найти документацию по классам, объектам и методам-членам?
    (Похоже, инспектор LG не может проверять функции.)

Если бы у меня были эти ресурсы, я мог бы хотя бы начать работать над обновлением некоторых расширений для более новых версий Gnome. Я бы не стал задавать эти простые вопросы, если бы они были хорошо объяснены где-нибудь, но получить всю информацию кажется очень сложным (я часами гуглил).


person Cobra_Fast    schedule 26.01.2013    source источник
comment
Хороший вопрос, вы добились каких-либо успехов в этом?   -  person tvl    schedule 15.02.2017


Ответы (1)


1: LookingGlass — это, по сути, консоль GJS. Он позволяет вам выполнять и тестировать строки GJS, захватывать объекты и манипулировать ими, а также использовать r(...) для использования результатов в следующих командах. Причина, по которой вы получаете r(...) = undefined, заключается в том, что log(String); ничего не возвращает, поэтому результат равен undefined.

2: Либо зарегистрируйтесь на протяжении init() и enable(), затем проверьте, где он прерывается, и попытайтесь точно определить разрывную линию, используя журнал или комментируя строки кода (хотя виновник, вероятно, определен в общем протоколировании, описанном в разделе внизу).

3: Официальной документации нет. У них есть несколько устаревших руководств для GNOME Shell 3.4 с небольшим объяснением разницы с 3.6, несколько страниц на концах C (++) используемых вами библиотек (хотя большинство функций, переменных и констант используют те же имена), но для любой реальной информации вам понадобится опыт, копание в другом коде расширения GNOME и оболочки или в некоторых неофициальных источниках. Однако неофициальные источники не всегда актуальны.

  • Обновленные документы, сгенерированные на RooJS, хотя, по крайней мере, события отключены, так как они разделены - (минус), а не _ (подчеркивание).
  • Старая, но в основном полезная документация, у MathematicalCoffee есть более полезная такие вещи, как подробно объясненный код, который является довольно надежным источником обучения.
  • Сгенерированные документы, почти все есть, очень обширные, но иногда сайт отключается на несколько дней. Вы можете попытаться клонировать репозиторий git, чтобы запустить его локально, но readme.md является дословной копией того, что они разветвили...
  • более поздняя ссылка, сделанная пользователем, хотя это довольно обширно, это не относится к много пользы, если вы используете более старую версию GNOME Shell, поскольку устаревшая и старая, скорее всего, будет работать, чем материал следующего поколения. Я рекомендую заглянуть на официальный веб-сайт расширений и просмотреть исходный код любого интересного расширения, который вы можете получить, так как это лучший способ узнать что-либо.

Вообще отладку гнома можно сделать несколькими способами. - используйте функцию log() и следуйте за journalctl в командной строке, проверьте либо GNOME, либо JS, используйте journalctl -f | grep -i js (или используйте grep -i gnome). Вы увидите некоторые предупреждения, несмотря ни на что, но большинство из них упоминают, из какого они расширения. Это хорошо и работает на всех дистрибутивах, реализующих systemd. Или регистрируйте определенный процесс, который является частью GNOME, например journalctl /usr/bin/gnome-session -f -o cat, просто имейте в виду, что некоторые дистрибутивы и версии регистрируются в разных файлах, а старые версии GNOME часто регистрируются в том, к чему ведет ваш диспетчер отображения. - используйте официальный (хотя и хитрый) способ ведения журнала: GNOME при отладке. Я лично не мог заставить это работать.

person RivenSkaye    schedule 09.07.2018