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:

Hello World

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.

Lytico’s Gtk3 test page in Gtk4 sample app side navigation

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

Comparision of Maui.Gtk (Gtk4) with maui-linux (Gtk3) page 1

For the above screenshot, these are the differences that can be spotted:

Missing in Gtk4 ImplementationMissing 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

Comparision of Maui.Gtk (Gtk4) with maui-linux (Gtk3) page 2

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

Comparision of Maui.Gtk (Gtk4) with maui-linux (Gtk3) page 3

Missing in Gtk4 ImplementationMissing in Gtk3 Implementation
LightCoral progress bar is at 100% instead of 50% and there is an additional blue one with 50%
SearchBar has full widthSearchBar is centered, no looking glass or clear button
Picker colors not working
Slider.ThumbImageSource not working
Stepper shows integersStepper adds “.0” to numbers (float?)
Switch.OnColor not green

Switch.ThumbColor doesn’t work on both sample apps.

Comparision of Maui.Gtk (Gtk4) with maui-linux (Gtk3) page 4

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

Comparision of Maui.Gtk (Gtk4) with maui-linux (Gtk3) page 5

Missing in Gtk4 ImplementationMissing 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.