A complete Linux platform for .NET MAUI: 50+ controls, GPU-native rendering on OpenGL ES or Vulkan, multi-window, native Wayland and X11, a composited WebView with Blazor Hybrid and HybridWebView, and deep desktop integration: clipboard, drag-and-drop, IME, desktop portals, system tray, printing, media, maps and PDF. The libraries you already use come too: CommunityToolkit, LiveCharts2, ReactiveUI and Prism run unmodified, and an opt-in bridge brings Syncfusion's controls to Linux. Compatibility is measured, not claimed: dotnet/maui's own Core, Controls and Essentials device tests run against OpenMaui with none failing, and 125 of 125 scorecard items are covered by 5,200+ tests. Your existing XAML, unchanged.
dotnet add package OpenMaui.Controls.Linux
Skia rasterises on the GPU through OpenGL ES on EGL, or opt in to Vulkan, with an automatic CPU raster fallback. Frames repaint only what changed, an idle window draws nothing, and WebView and hardware-decoded video frames arrive as zero-copy DMA-BUF textures. Measured on identical workloads: 2.4x faster frames and tail latency under 4 ms. Fractional HiDPI is pixel-exact, and a window moved to a monitor of another scale re-renders at the new density.
Native Wayland clipboard, bidirectional drag-and-drop across windows, and compositor IME (text-input-v3 with preedit and surrounding text). Native D-Bus desktop portals for file choosers, links, notifications, the camera and theme settings, plus system tray, CUPS printing, global hotkeys, per-app secure storage, desktop media keys, multiple top-level windows and a WebView composited inside the Skia tree, with Blazor Hybrid and HybridWebView on top.
dotnet/maui's own device tests run unchanged against OpenMaui's handlers: 2,636 Core, Controls and Essentials tests, none failing, so the assertions are MAUI's, not ours. A scorecard generated from every test run covers the 19 categories Microsoft publishes for its own Linux backend, a stub scan reviews 2,313 methods that MAUI, CommunityToolkit and Syncfusion leave empty in their platform-neutral builds, golden screenshots at 1.0x to 2.0x catch visual regressions, and every package is checked against the last release's public API.
AT-SPI2 screen reader support for ORCA and other assistive technologies, with layouts exposing their children and SemanticOrderView setting the reading order, high contrast mode detection, and full keyboard navigation with Tab and Shift+Tab. Build inclusive applications that work for everyone.
Complete control library: Button, Label with FormattedText, Entry, CollectionView with grouping, drag-to-reorder and grids, ListView, TableView, CarouselView, RefreshView, SwipeView, AbsoluteLayout, FlexLayout, shapes with gradients, ControlTemplate, NavigationPage with TitleView, Shell with its tab bar, modal pages, window overlays and custom title bars, MenuBar and context flyouts, tooltips, alerts, action sheets and prompts: all rendered in Skia, all driven through MAUI's own handlers, animation manager and VisualStateManager.
A compatibility suite runs popular MAUI libraries unmodified through their documented registration: CommunityToolkit.Maui (Popup, Expander, TouchBehavior, DrawingView with image export, Toast and Snackbar as desktop notifications, launcher badges), CommunityToolkit.Mvvm, MediaElement, SkiaSharp views, LiveCharts2, ReactiveUI, Prism and DI-resolved pages. 10 of 11 evaluated libraries run unmodified; results are published in the scorecard alongside the core items.
Syncfusion ships only stub handlers for Linux. The opt-in OpenMaui.Controls.Linux.Syncfusion package makes them work, with the mouse and keyboard handling of their Windows builds: DataGrid (navigation, sorting, resizing and moving columns, right-click), Scheduler (resources side by side in day, week and month views, drag and resize appointments), ImageEditor, Toolbar, lists and trees with sticky group headers, every chart series, ComboBox and Autocomplete, numeric and masked entries, Carousel, Rotator, SignaturePad, PullToRefresh, SfPopup and its dialogs, and SfPdfViewer with the Pdf package. One call: UseLinuxSyncfusion(). Bring your own Syncfusion license.
An IRenderTarget seam puts Skia's OpenGL ES backend on an EGL surface per window, zero-copy on Wayland, with an opt-in Vulkan target that picks the compositor's GPU on hybrid laptops. Partial damage repaints only what changed. Raster fallback is automatic, OPENMAUI_RENDERER forces any target, and a headless benchmark suite with performance gates keeps the numbers honest.
First-class protocols instead of subprocess workarounds: text-input-v3 IME with preedit and surrounding text, wl_data_device clipboard and drag-and-drop, primary-selection middle-click paste, fractional scaling that follows the monitor, and Skia-drawn client-side decorations on GNOME that host MAUI's custom TitleBar. Desktop portals are spoken natively over D-Bus.
WPE WebKit renders pages headlessly and each frame is composited in the Skia tree, zero-copy on the GPU: no GTK widget, no reparenting, identical on Wayland and X11. Context menus, clipboard, dialogs, file chooser, downloads with the desktop's Save dialog, permissions, spell checking, cursors and real KeyboardEvent.code values all route through the platform. HybridWebView works as on iOS and Mac: your web app served from Resources/Raw, MAUI's JavaScript bridge, InvokeJavaScriptAsync, InvokeDotNet, raw messages and WebResourceRequested. The opt-in OpenMaui.Controls.Linux.Blazor package hosts BlazorWebView on the same engine.
All 36 Essentials services, verified by dotnet/maui's own Essentials device tests: per-app SecureStorage, permissions, file results from pickers, app info from your project file, the launcher, battery and display. Motion and environment sensors read the kernel's devices where the hardware exists; MediaPicker captures photos and video from the camera and applies its resize and compression options; Contacts reads GNOME's address books through Evolution Data Server; Geocoding works against the Nominatim service you choose.
docs/COMPATIBILITY.md is regenerated from every test run by tools/Scorecard: 19 categories, 125 items, each covered only when its mapped tests pass, plus a third-party libraries section. dotnet/maui's Core, Controls and Essentials device tests run in a separate tests workflow, the stub scan fails when a library update brings in an unreviewed stub, and golden screenshot tests render every control and whole sample pages at 1.0x, 1.25x, 1.5x, 1.75x and 2.0x against committed baselines. 5,200+ tests, no display required, and a public API gate so upgrades never break you silently.
Application.OpenWindow creates real native windows with their own rendering, input and drag-and-drop at parity on X11 and Wayland, in native or GTK mode. Opt-in packages add MediaElement on GStreamer with zero-copy VA-API decode, its events and states as on Windows, playback speed, playback controls and desktop media keys over MPRIS; Maps with OpenStreetMap street tiles plus satellite and hybrid layers; and PDF on Google's PDFium, bundled for x64 and ARM64: a scrolling, zoomable SkiaPdfView, page rendering and text extraction.
dotnet new templates, XAML and C# Hot Reload under dotnet watch, a Live Visual Tree inspector, openmaui doctor for a one-shot environment report, and one-command packaging: openmaui-appimage --project ./MyApp publishes, packages and generates the installer with host-dependency checks, signing and self-update, as an AppImage, a deb or an rpm (--format all builds every one). x64 and ARM64.
Install the templates and have a GPU-rendered native Linux desktop app running in three commands, Blazor Hybrid included, then ship it as an AppImage with one more. Bring your CommunityToolkit, LiveCharts2 and Syncfusion controls along. MIT licensed, 5,200+ automated tests, dotnet/maui's own device tests passing, 125/125 compatibility scorecard items covered.
Install NowThe .NET MAUI on Linux landscape. OpenMaui implements the display protocols natively and renders with Skia on the GPU; the GTK-based alternatives inherit their capabilities from GTK.
| OpenMaui | MAUI Labs GTK4 | MauiGtk | GnomeMaui | |
|---|---|---|---|---|
| Platform foundation | ||||
| MAUI control coverage | 125/125 scorecard items, computed from 5,200+ tests; dotnet/maui's own Core and Controls device tests: 2,355 run, 0 failing | Very good (self-reported) | Moderate | Early |
| Conformance evidence | dotnet/maui's own device tests run unchanged (Core, Controls, Essentials: 2,636, 0 failing), generated scorecard in the repo, third-party stub scan, golden screenshots at 1.0x-2.0x, end-to-end WebView tests, public API gate | Feature table | - | - |
| Wayland | Native implementation | Via GTK4 | Via GTK | Via GTK |
| X11 | Native implementation | Via GTK4 | Via GTK | Via GTK |
| Rendering | Skia | Native GTK widgets | GTK | Skia/GTK |
| GPU presentation | Skia OpenGL ES via EGL (zero-copy on Wayland) or Vulkan, partial damage, raster fallback | GTK4 GSK | GTK | GTK |
| Consistent appearance across distros | Strong | Depends on GTK/theme | Depends on GTK | Strong potential |
| Fractional Wayland scaling | Explicit support, follows the monitor at runtime | GTK handles it | GTK | GTK |
| ARM64 | Yes (x64 and ARM64 native shims) | - | - | - |
| Ecosystem | ||||
| Third-party MAUI libraries | 10 of 11 tested libraries run unmodified (CommunityToolkit, LiveCharts2, ReactiveUI, Prism, Syncfusion, ...), published in the scorecard; a stub scan reviews what their platform-neutral builds leave out | - | - | - |
| Syncfusion controls | Opt-in bridge with the Windows builds' mouse and keyboard handling: DataGrid, Scheduler (resource view, drag and resize), ImageEditor, Toolbar, lists, charts, inputs, carousel, signature pad, popups, PDF viewer | - | - | - |
| Desktop integration | ||||
| Linux desktop services | All 36 Essentials services; dotnet/maui's Essentials device tests pass (sensors, camera and contacts where the desktop has them) | 21 done + 2 partial of 36 Essentials | Limited | Early |
| Desktop portals | Native D-Bus | Via GTK | Via GTK | - |
| Accessibility | AT-SPI2, Tab navigation | GTK accessibility | GTK | GTK |
| Drag/drop and clipboard | Native protocols, across windows | GTK | GTK | GTK |
| Printing | CUPS | Limited/evolving | Limited | - |
| System tray / global hotkeys | Yes | Limited/evolving | Limited | - |
| Web and beyond | ||||
| WebView | WPE WebKit composited in the Skia tree, zero-copy on the GPU, native Wayland and X11; public browser API for libraries (navigation, downloads, capture, save as PDF); HybridWebView with MAUI's JavaScript bridge | WebKitGTK widget | WebKitGTK widget | - |
| Blazor Hybrid | Yes (OpenMaui.Controls.Linux.Blazor on WPE) | Yes (WebKitGTK) | - | Demonstrated |
| PDF viewing | PDFium bundled (x64, ARM64): SkiaPdfView, page rendering and text, SfPdfViewer works | - | - | - |
| Maps | Yes | - | - | - |
| MediaElement | GStreamer, zero-copy VA-API decode; events, speed and playback controls as on Windows; desktop media keys (MPRIS) | - | - | - |
| Multi-window | Yes | Via GTK4 | Via GTK | - |
| Packaging | One command: AppImage, deb and rpm | - | - | - |