Documentazione per lo sviluppo dell'estensione della shell di gnome?


22

Ho voluto sviluppare alcune estensioni di Gnome Shell poiché sono solo in javascript, tuttavia ho cercato e c'è praticamente zero documentazione, ovunque io guardi la gente dice solo di usare la documentazione di base di Gnome, ma questo NON aiuta, posso non ho trovato alcuna documentazione per le importazioni per le estensioni, o alcun tipo di API JavaScript per lo sviluppo delle estensioni, ho provato a guardare alcuni tutorial (la maggior parte dei quali sono per Gnome 3.0, non 3.2), ma nulla mi aiuta.

Qualcuno sa se è in corso la stesura della documentazione per lo sviluppo delle estensioni? Mi piacerebbe davvero avere una buona documentazione ...


Hai già visto questa pagina: live.gnome.org/GnomeShell/Extensions ?
Benjamin,

Risposte:


7

Il motivo per cui non sono contento del codice demo e dei tutorial è che introducono un sacco di importazioni casuali e non spiegano mai cosa sono o come usarle. Sto costruendo la mia risposta a cui gli altri possono aggiungere, in modo che le persone possano effettivamente sapere quali funzioni possono chiamare, cosa possono importare, ecc.

Esiste una documentazione generata per Gnome Shell , ma è in qualche modo incompleta: non sono riuscito a trovare la maggior parte delle cose che ho visto in vari tutorial, esempi ed estensioni pubblicate.

L'unica documentazione veramente affidabile è la fonte stessa di Gnome Shell. Semplicemente non esiste nessun altro modo aggiornato o completo per sapere cosa è disponibile.

Questi due punti di partenza sono particolarmente buoni:

La sorgente C mostra che esiste un oggetto importante chiamato globalche non ha bisogno di essere importato e fornisce accesso a cose come il gestore delle finestre (compresi i tasti di scelta rapida), le informazioni sulla sessione, le schermate disponibili e altre cose simili. Ecco la fonte:

Volevo sapere come usare l' global.displayoggetto , e per ora la migliore documentazione è quella fornita da Alan Knowles .

Altre cose possono essere importate tramite i binding di introspezione di GObject, ad esempio:

In generale, puoi consultare la documentazione di riferimento per i vari componenti di Gnome per trovare altre importazioni.

Una nota sullo specchio: ci sono alcune stranezze sull'uso di queste importazioni nello specchio - Ho perso molto tempo solo cercando di testare le cose al volo. Per esempio:

const Clutter = imports.gi.Clutter;

... non funzionerà, perché Clutteresiste già. Ma allora:

const MyClutter = imports.gi.Clutter;

... inoltre non funzionerà; MyClutternon è definito e non può essere utilizzato. Devi fare:

MyClutter = imports.gi.Clutter;

Certo, in questo caso Clutteresiste già, quindi non è davvero necessario. Ma dal momento che non è documentato ciò che è e non è già nello spazio dei nomi dello specchio, se provi a importare qualcosa e hai questi problemi, tienilo a mente.

Domande rimanenti:

  • Che cosa è Mainloop? Questo viene importato main.jse sembra avere funzioni relative al loop principale GLib. C'è documentazione per questo?
  • Che cosa è imports.misc? Sembra avere alcune cose davvero utili lì dentro, tipo ExtensionUtils: che cos'è?
  • Come si usa DBus? E l'introspezione?

4

La documentazione è un po 'in ritardo, una potenziale fonte di informazioni sono le riflessioni di un idraulico del sistema operativo , ad esempio questo post sull'aggiornamento delle estensioni della shell GNOME per funzionare con la versione 3.2

A seconda delle informazioni che desideri, puoi provare la mailing list di gnome.


1
Sebbene ciò possa teoricamente rispondere alla domanda, sarebbe preferibile includere qui le parti essenziali della risposta e fornire il collegamento come riferimento.
hhlp,

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.