Причиною, що я не задоволений демо-кодом та навчальними посібниками, є те, що вони вводять купу випадкових імпортів і ніколи не пояснюють, що вони є чи як ними користуватися. Я будую свою власну відповідь, яку можуть додати інші, щоб люди могли насправді знати, які функції вони можуть викликати, які вони можуть імпортувати тощо.
Для 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? А як щодо самоаналізу?