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


22

Я хочу розробити деякі розширення Gnome Shell, оскільки вони просто в 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

Документація трохи відстає, одним з потенційних джерел інформації є Musings з водопровідника ОС , наприклад, це повідомлення про оновлення розширень оболонки GNOME для роботи з версією 3.2

Залежно від потрібної інформації ви можете спробувати список розсилки gnome.


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

3

Цей покроковий посібник для створення розширень для gnome 3.4 може допомогти: https://live.gnome.org/GnomeShell/Extensions/StepByStepTutorial


1
У ньому сказано: "[API] дуже складно через відсутність документації ..." . Ну добре.
detly

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