Maui.Gtk -- Is This the Breakthrough?
2026/03/25
thomiel

A new MAUI backend for Gtk4 was done in under two months
… and we here at MauiGtk had nothing to do with it. 8-/
Microsoft employee Jonathan Dick, obviously with heavy use of Claude agents, raised Maui.Gtk (mind the dot in the name!) into existence. Maui.Gtk uses gir.core to access the Gtk4 api. As his Gtk4 pull request to PolyPilot (a MAUI-based AI agent dashboard) indicates, having a bigger number of agents simultaneously working at different tasks is obviously the way getting somewhere within a short period of time. See Jon’s video with Allan Ritchie where he is demonstrating his vibe coding workflow using his Sherpa project.
Anyway, I was able to run the hello world sample in a matter of minutes on my Ubuntu 24.04.4 using the app template:
sudo apt install libgtk-4-dev libwebkitgtk-6.0-dev
sudo apt-get install -y dotnet-sdk-10.0
dotnet new install Platform.Maui.Linux.Gtk4.Templates
dotnet new maui-linux-gtk4 -n MyApp.Linux
cd MyApp.Linux
dotnet run
After removing the agent workflow specific code, I also was able to run the platform sample app:

In an attempt to challenge Jon’s Gtk4 code a bit, I added Lytico’s Gtk3 test page from Javier’s maui-linux repo to Jon’s sample app and compared it with the original Gtk3 app, powered by GtkSharp instead of gir.core.

This is the result (Gtk4 on the left, Gtk3 right – switched from dark to light theme for better comparability):

For the above screenshot, these are the differences that can be spotted:
| Missing in Gtk4 Implementation | Missing in Gtk3 Implementation |
|---|---|
| entry field clear button | |
| padding background color (purple) | |
| button outline and hover highliting | |
| simultaneous strikethrough and underline (probably a bug) | |
| PlatformImageLoadingService for background image |

| Missing in Gtk4 Implementation | Missing in Gtk3 Implementation |
|---|---|
| gradient on label | |
| clicking checkboxes increases the window size (eating up side navigation) | |
| all six editor fields are failing |

| Missing in Gtk4 Implementation | Missing in Gtk3 Implementation |
|---|---|
| LightCoral progress bar is at 100% instead of 50% and there is an additional blue one with 50% | |
| SearchBar has full width | SearchBar is centered, no looking glass or clear button |
| Picker colors not working | |
| Slider.ThumbImageSource not working | |
| Stepper shows integers | Stepper adds “.0” to numbers (float?) |
| Switch.OnColor not green |
Switch.ThumbColor doesn’t work on both sample apps.

| Missing in Gtk4 Implementation | Missing in Gtk3 Implementation |
|---|---|
| localisation (date picker always shows US date format) | |
| time picker only has read-only mode |

| Missing in Gtk4 Implementation | Missing in Gtk3 Implementation |
|---|---|
| LinearGradientBrush on rectangle |
The StrokeDashArray property renders quite differently on both platform implementations. (Note: The dotnet_bot.png is missing in the Gtk3 sample repo and I have replaced it with a calculator icon.)
So the missing features score is 11:3 for Jon’s agent-driven Gtk4 implementation, which is a bit unfair, of course, as Lytico has created the page especially to test the Gtk3 implementation. There might be more features that are not implemented on both sides (especially if you take a closer look at the code). But this might be a good starting point for further implementing control functionality – be it by agents or humans…
I’d conclude that more complex Gtk apps based on pure MAUI are not yet a realistic option and that’s the reason why MAUI apps in the wild still rely on WebViews featuring WebKitGtk to render Gtk controls. But the projects underlines the aspiration to get a complete Gtk implementation for MAUI and raises hope that it possibly won’t take long any more.