Solución:
Yo mismo lo he investigado recientemente. La documentación suele ser escasa u obsoleta. Aquí hay algunas fuentes que me ayudaron a comenzar (y a través del desarrollo):
- Cosas básicas
- Cosas básicas sobre desarrollo
- Tutorial paso a paso (Gnome 3.4)
- Documentación no oficial para los enlaces de JavaScript de muchas bibliotecas
- Las fuentes de los enlaces JavaScript de gnome-shell
- Explicación de los componentes de Ui-Toolkit de St (Shell Toolkit).
- Algunas pautas no oficiales para obtener su extensión en extensions.gnome.org
Dado que la documentación casi no está disponible (o está actualizada), deberá hacer mucho de lectura de fuentes. Vinculé las fuentes de gnome-shell anteriores (la parte de JavaScript), que es un buen comienzo cuando se sumerge en partes que no están cubiertas por la documentación oficial (que es lo más completo que encontrará).
Lo que también es particularmente útil es verificar extensions.gnome.org para ver las extensiones que hacen cosas similares a lo que desea crear, y mirar sus fuentes (la mayoría de ellas son de código abierto en GitHub o Bitbucket. También puede instalarlas y encontrar el fuentes bajo ~/.local/share/gnome-shell/extensions/
).
Cuando busque algo para usar o más documentación sobre una función en particular, también puede consultar manuales para enlaces en diferentes idiomas (aunque los parámetros y los valores de retorno pueden no coincidir).
Por último, pero no menos importante, aquí hay algunos consejos de depuración:
LookingGlass no es particularmente útil. Solo muestra una línea de una excepción (la descripción) y solo si ocurren en el momento del inicio (cuando se inicia su extensión por primera vez).
Para ver StackTraces completo y excepciones en tiempo de ejecución, consulte el ~/.xsession-errors
-expediente. Puede ser muy largo e hinchado. Utilizo este útil script para leerlo:
# Grabs the last session-errors from the current X11 session.
# This includes full Stack-Trace of gnome-shell-extension errors.
# See https://live.gnome.org/GnomeShell/Extensions/StepByStepTutorial#lookingGlass
tail -n100 ~/.cache/gdm/session.log | less
Nota que desde Gnome 3.6, si estás usando
gdm
como administrador de pantalla, el registro de sesión actual es el archivo~/.cache/gdm/session.log
.
En algunas distribuciones más nuevas que usan systemd, puede obtener los registros de errores con:
journalctl -f /usr/bin/gnome-session
Para depurando la parte de preferencias de su extensión, puede iniciar las preferencias utilizando el gnome-shell-extension-prefs
-tool desde un terminal, para ver cualquier salida de excepción en la consola (también puede llamar a la herramienta como gnome-shell-extension-prefs [uuid]
, para mostrar directamente sus preferencias de extensiones).
Dado que actualmente no existe una forma real de depuración con puntos de interrupción (la hay, pero es complicada), puede iniciar sesión en la consola para una comprobación rápida, utilice el print()
-función. Verá la salida como se mencionó anteriormente (ya sea en el archivo de error de sesiones o en el terminal al iniciar gnome-shell-extension-prefs
-herramienta).
Aunque puede ser un poco difícil entrar en él, el marco de extensión es bastante poderoso. Tengo divertida!
Escribí un Publicación de blog con algo más de detalle, que se puede encontrar aquí: Making Gnome-Shell Extensions
Se puede encontrar una lista extensa de referencias en la página de Referencia de API de Gnome Developer.
Usé lo siguiente para mi extensión, pero su uso puede variar:
-
GTK + 3
GTK + es la biblioteca principal que se utiliza para construir interfaces de usuario en aplicaciones GNOME. Proporciona controles de interfaz de usuario y devoluciones de llamada de señal para controlar las interfaces de usuario.
-
GDK 3
GDK es una capa intermedia que aísla GTK + de los detalles del sistema de ventanas.
-
Desorden
Clutter es una biblioteca basada en GObject para crear interfaces gráficas de usuario rápidas y visualmente ricas.
-
Introspección de GObject
GObject Introspection se esfuerza por proporcionar una capa de middleware entre bibliotecas C (basadas en GObject) y enlaces de idiomas.
-
Cascarón
Manual de referencia de Shell
-
S t
S t – Kit de herramientas de Shell – es el kit de herramientas personalizado basado en Clutter de GNOME Shell que define actores útiles. Algunos de estos actores, como
StBoxLayout
yStBin
implementar varias opciones de diseño. -
Especificación del tema del icono
Esta especificación de freedesktop.org describe una forma común de almacenar temas de iconos.
NOTA: ¡Estos dos últimos son muy útiles para encontrar parámetros de elementos visuales!
-
PyGTK
PyGTK es GTK + para Python. Esta referencia contiene un capítulo para cada módulo Python PyGTK (que corresponde a la biblioteca GTK + subyacente) que contiene las descripciones de las clases.
-
PyGObject
PyGObject es un módulo de extensión de Python que brinda acceso limpio y consistente a toda la plataforma de software GNOME mediante el uso de GObject Introspection. Específicamente hablando, son enlaces de Python para GLib, GObject, GIO y GTK +.
Esta referencia contiene un capítulo para cada módulo PyGObject que contiene las descripciones de las clases.