ddterm consists of three components:
-
GNOME Shell extension, loaded into and running inside of GNOME Shell process.
-
GJS/Gtk application, running as a separate process.
-
Preferences dialog, loaded by both application and extension.
GNOME Shell extension launches GJS/Gtk application as a special Wayland client. Then they communicate over D-Bus in both directions.
-
Launches the application.
-
Handles "global" keyboard shortcuts.
-
Invokes GJS/Gtk application's exported actions over D-Bus.
-
Moves, resizes, maximizes/unmaximizes GJS/Gtk application's window. Currently, most of the awful hacks are here.
-
Most of the UI is implemented here, currently in Gtk 3.
-
Exposes some actions on D-Bus, for the GNOME Shell extension to invoke.
-
Unlike a regular Gtk app, it does not rely on D-Bus activation. Instead, it calls GNOME Shell extension's D-Bus API to start the "service" instance.
-
On Wayland, synchronizes its window size with the GNOME Shell extension's expected window size before showing the window.
Can be loaded by ddterm GJS/Gtk application, or by GNOME Shell Extensions app. Because of that, it currently has to support both Gtk 3 and Gtk 4.
Otherwise, nothing interesting.