La razón por la que no estoy contento con el código de demostración y los tutoriales es que introducen un montón de importaciones aleatorias y nunca explican qué son o cómo usarlos. Estoy construyendo mi propia respuesta a la que otros pueden agregar, para que las personas puedan saber qué funciones pueden llamar, qué pueden importar, etc.
Hay documentación generada para Gnome Shell , pero está algo incompleta: no pude encontrar la mayoría de las cosas que vi en varios tutoriales, ejemplos y extensiones publicadas.
La única documentación realmente confiable es la fuente de Gnome Shell. Simplemente no hay ninguna otra forma actualizada o completa de saber qué hay disponible.
Estos dos puntos de partida son particularmente buenos:
La fuente en C muestra que hay un objeto importante llamado global
que no necesita importarse, y proporciona acceso a cosas como el administrador de ventanas (incluidas las combinaciones de teclas), la información de la sesión, las pantallas disponibles y otras cosas similares. Aquí está la fuente:
Quería saber cómo usar el global.display
objeto , y por ahora la mejor documentación es la proporcionada por Alan Knowles .
Se pueden importar otras cosas a través de los enlaces de introspección GObject, por ejemplo:
En general, puede consultar la documentación de referencia de los distintos componentes de Gnome para encontrar otras importaciones.
Una nota sobre el espejo: Sin embargo, hay algunas peculiaridades sobre el uso de estas importaciones en el espejo: perdí mucho tiempo tratando de probar las cosas sobre la marcha. Por ejemplo:
const Clutter = imports.gi.Clutter;
... no funcionará, porque Clutter
ya existe. Pero entonces:
const MyClutter = imports.gi.Clutter;
... tampoco funcionará; MyClutter
no está definido y no se puede usar. Tu tienes que hacer:
MyClutter = imports.gi.Clutter;
Por supuesto, en este caso Clutter
ya existe, por lo que no es realmente necesario. Pero dado que no está documentado lo que está y no está en el espacio de nombres del espejo, si intenta importar algo y tiene estos problemas, tenga en cuenta.
Preguntas restantes:
- ¿Qué es
Mainloop
? Esto se importa main.js
y parece tener funciones relacionadas con el bucle principal GLib. ¿Hay documentación para esto?
- ¿Qué es
imports.misc
? Parece tener algunas cosas realmente útiles allí, como ExtensionUtils
: ¿qué es eso?
- ¿Cómo se usa DBus? ¿Qué pasa con la introspección?