Why We Need the Gtk Platform for MAUI

2026/01/25

thomiel

Why We Need the Gtk Platform for MAUI

A short wrap-up of our goal and motivation along with a historical overview of events that lead to MauiGtk

Unique selling point of .NET MAUI compared to other cross-platform tools such as PhoneGap, Uno, Flutter, Avalanche, Electron, ReactNative, and Qt is that MAUI uses native controls of the respective platform and not self-drawn or generated ones via a browser engine that look the same everywhere. (Note: Qt does a good job faking native controls using themes; Eto.Forms and wxWidget support native controls but on much less platforms.)

Luke and Yoda Luke: Is the dark side stronger? Yoda: No, no, no. Quicker, easier, more seductive.

But what does native mean in such a diverse ecosystem like Linux? KDE apps look different compared to Gtk apps and both can be conceived as native to Linux. Consequently, one needs to break down the platform to the UI toolkit used by Linux window managers. Qt is first-class citizen of the KDE desktop whereas Gtk is more or less associated with the GNOME desktop (not to mention all the others that are gtk-based). This raises the question why we opted for Gtk and not Qt. These are the reasons:

  • Qt already has some cross-platform support to run on other platforms and a MAUI platform would be some kind of redundancy.
  • Qt is based on C++ along with a special precompiler but we more like the modern C# language MAUI is written in and there is good support for Gtk with GtkSharp and gir.core, whereas Qt currently lacks an actively maintained C# wrapper.
  • Historically, there is an overlap between developers of Xamarin, the predecessor of MAUI, and the GNOME desktop (see below).

After all, the primordial cross-platform gui framework wxWidgets also uses Gtk for native controls under Linux, so we are in good company.


Putting MauiGtk in a Historical Context

This is the timeline of .NET development up to the point where MAUI became part of .NET:

YearVersion
2002.NET Framework 1.0
2016.NET Core 1.0 (cross-platform but not for GUI apps)
2019.NET Framework 4.8.0 (Windows-only)
2019.NET Core 3.1
2020.NET 5.0
2021.NET 6.0 (introducing cross-platform GUI MAUI)

The Mono Project

It’s worth noting that already 2001 the Mono project was started by Miguel de Icaza as an open source implementation of the .NET framework. In the same year Miguel de Icaza together with Nat Friedman founded Ximian Inc. that was acquired by Novell in 2003. Novell itself was acquired by Attachmate (also SUSE) in 2011, Miguel and Nat were fired but together founded Xamarin.

The Xamarin Years

MonoTouch (for iOS) and Mono for Android were licensed from Attachmate as Xamarin.iOS and Xamarin.Android that allowed C# app development on both mobile platforms. Xamarin released Xamarin Studio in 2013 followed by Xamarin.Forms in 2014, which basically made it possible to write C# code that would run on iOS, Android, and the Universal Windows Platform (UWP), supporting also the Windows Phone back then.

Emergence of MAUI

2016 Xamarin was assimilated by Microsoft. Xamarin.Forms 5.0, released in 2021, was the last version before it was renamed to .NET MAUI in 2022 while getting new features like the Resizetizer for resizing icons and a major structural change like representing the app in a single solution rather than separate projects per platform each.

GNOME Crossreference

One could say “Mono relates to .NET like GNOME relates to KDE”. Back in 1997, Miguel de Icaza started the GNOME project due to a lacking free software license for Qt that KDE is built with. Together with Nat Friedman he founded the company Helix Code in 1999 to focus on developing GNOME applications. Helix Code later became Ximian Inc.


That’s Why Gtk is the Right Platform

Taking into account all these connections between GNOME and Xamarin/MAUI development, it seems logical to decide for Gtk, as Gtk is to GNOME what Qt is for KDE.

Where we are in 2026

Already in 2021, Javier Suárez forked MAUI into the maui-linux repository on GitHub to add Linux as a platform. This remained in a rather alpha state with occasional contributions by others. Only by 2024 it slowly became easier to actually build and develop maui-linux on Linux using Visual Studio Code and by the end of 2025 some people decided to work together beyond anonymous pull requests and are willing to make it a serious community effort.