¿Documentación para el desarrollo de la extensión de shell gnome?

22

He estado queriendo desarrollar algunas extensiones de Gnome Shell ya que solo están en javascript, sin embargo, he estado buscando y prácticamente no hay documentación, en todas partes, la gente simplemente dice que use la documentación básica de Gnome, pero esto NO ayuda, puedo No encontré ninguna documentación para las importaciones de extensiones, ni ningún tipo de API de JavaScript para el desarrollo de extensiones. Intenté revisar algunos de los tutoriales (la mayoría de los cuales son para Gnome 3.0, no 3.2), pero nada ayuda.

¿Alguien sabe si están en proceso de escribir documentación para el desarrollo de la extensión? Realmente me encantaría una buena documentación ...

KoRnKloWn
fuente
¿Ya viste esta página: live.gnome.org/GnomeShell/Extensions ?
Benjamin
Pregunta similar sobre SO: stackoverflow.com/questions/13107743/…
Wilf

Respuestas:

7

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 globalque 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.displayobjeto , 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 Clutterya existe. Pero entonces:

const MyClutter = imports.gi.Clutter;

... tampoco funcionará; MyClutterno 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.jsy 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?
desviarse
fuente
4

La documentación está un poco retrasada, una fuente potencial de información son las reflexiones de un plomero del sistema operativo , por ejemplo, esta publicación sobre la actualización de las extensiones de GNOME Shell para que funcione con la versión 3.2

Dependiendo de la información que desee, puede probar la lista de correo de gnome.

Pantera
fuente
1
Si bien esto puede responder teóricamente la pregunta, sería preferible incluir aquí las partes esenciales de la respuesta y proporcionar el enlace para referencia.
hhlp
3

Este tutorial paso a paso para crear extensiones para gnome 3.4 puede ayudar: https://live.gnome.org/GnomeShell/Extensions/StepByStepTutorial

agustibr
fuente
1
Dice: "[La API] es muy difícil, debido a la falta de documentación ..." . Oh bien.
desviarse
1
Te estoy otorgando la recompensa porque esa página de destino tiene muchos enlaces útiles :)
detly