Eine einfache Erweiterung für GNOME, um ein ChatGPT-Overlay anzuzeigen. Im Hintergrund wird die OpenAI-API genutzt (API-Key wird benötigt). Github Projekt
GNOME Extensions werden in Javascript programmiert. Es gibt einen minimalen Developer Guide der den Einstieg in die Extension-Entwicklung erleichtert, aber die eigentliche Entwicklung ist nicht so einfach. Um zu verstehen wie produktive Extensions aufgebaut sind ist es hilfreich Source Code zu lesen:
Je nach verwendeter Version von GNOME werden unterschiedliche Versionen der Libraries verwendet. Um verschiedene Versionen gleichzeitig zu unterstützen, können spezifische Implementierungen erstellt werden und dann je nach Library-Version geladen werden.
Beispiel um Soup 2.4 und 3.0 zu supporten:
if (Soup.get_major_version() === 2) {httpClient = Me.imports.HttpClientV1;} else {httpClient = Me.imports.HttpClientV2;}
Um eine neue Version einer Extension zu testen muss zuerst der Source Code in den Extension Ordner kopiert werden. Danach muss die Extension neu geladen werden:
Mit X11 super easy:
Mit Wayland, not so easy...
# Screen Size der Nested Session festlegen (sonst ist das Fenster minimal klein)export MUTTER_DEBUG_DUMMY_MODE_SPECS=1920x768# Nested Wayland Session startendbus-run-session -- gnome-shell --nested --wayland
Die Programmierung von Extensions ist begrenzt und weird. Eine normale native GTK-App mit System-Tray Icon ist vermutlich die bessere Alternative für die meisten Projekte (wird vielleicht das nächste Side-Project).