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 global
che 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.display
oggetto , 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é Clutter
esiste già. Ma allora:
const MyClutter = imports.gi.Clutter;
... inoltre non funzionerà; MyClutter
non è definito e non può essere utilizzato. Devi fare:
MyClutter = imports.gi.Clutter;
Certo, in questo caso Clutter
esiste 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.js
e 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?