I think this is just me needing reassurance…
Gtk has (amongst others) the application level events activate and startup. For C++ gtkmm gives conventional names to the handlers as part of the inheritance hierarchy from Gio::Application. Rust (gtk-rs) on the other hand just presents the functions to bind handlers since it doesn't have inheritance per se (it handles the Gtk inheritance but doesn't offer anything to application developers).
D has classes and inheritance as C++, but GtkD doesn't present an inheritance hierarchy as gtkmm does, it just presents the binding functions as gtk-rs does.
At first sight this would seem to mean GtkD isn't going the class/inheritance route for handling Gtk but is going the functions route. I am guessing this is a consequence of doing the easiest simplest transform of the C API using the GIR files, whereas gtkmm puts a lot of effort to make as C++-like a binding as possible.
I am not saying GtkD should replicate the gtkmm architecture, but has it been constructively eschewed?