v10.0.120.1 released

Build Native Linux Apps with .NET MAUI

A complete Linux platform for .NET MAUI 10.0.120: GPU-rendered, native on Wayland and X11, and integrated with the desktop. Your existing XAML, code and libraries run unchanged, and dotnet/maui's own device tests pass with none failing.

terminal
$ dotnet add package OpenMaui.Controls.Linux
50+
Built-in Controls
2,640
dotnet/maui Device Tests, 0 Failing
125/125
Scorecard Items Covered
10 of 11
Popular Libraries Run Unmodified
5,500+
Automated Tests

Why OpenMaui Linux Platform?

GPU-Native Linux Performance

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. Startup is measured too: GTK and its theme are only set up when a WebView or GTK widget needs them (one app's first frame went from 4.1 s to 1.4 s), and apps published ReadyToRun start over a second sooner. Per-frame cost has test budgets, so a redraw or resize regression shows up as a failing test.

Deep Desktop Integration

Native Wayland clipboard, bidirectional drag-and-drop across windows, compositor IME (text-input-v3 with preedit and surrounding text) and touchscreens on Wayland and X11. 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 on the Secret Service, desktop media keys, startup notification and window activation, multiple top-level windows and a WebView composited inside the Skia tree, with Blazor Hybrid and HybridWebView on top.

Conformance You Can Verify

dotnet/maui's own device tests run unchanged against OpenMaui's handlers: 2,640 Core, Controls and Essentials tests from MAUI 10.0.120, none failing, so the assertions are MAUI's, not ours. The handlers implement MAUI's own handler interfaces and Map signatures, so mapper customisations and handlers you register work as on the other platforms. A scorecard generated from every test run covers the 19 categories Microsoft publishes for its own Linux backend, a stub scan reviews 2,354 methods that MAUI, CommunityToolkit and Syncfusion leave empty in their platform-neutral builds, and golden screenshots at 1.0x to 2.0x catch visual regressions.

Accessibility Built-In

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.

Your MAUI App, Unchanged

Add the OpenMaui packages and one UseLinux() call: your XAML, view models, bindings, dependency injection, Shell routes, styles and resources run as they are. Linux is a plain net10.0 target beside your Android, iOS, Mac and Windows targets in the same project, so there is no second codebase to maintain. Custom handlers and mapper tweaks port over because the Linux handlers implement MAUI's own handler interfaces, and the libraries you already use, from CommunityToolkit to LiveCharts2, ReactiveUI and Prism, come along unmodified.

Keeps Pace with MAUI

Versions follow MAUI's: OpenMaui 10.0.120.1 is built on MAUI 10.0.120, shipped two days after Microsoft released it, and passes dotnet/maui's own device tests from that release. Reported issues get fixed fast: two community reports with precise repros were fixed, covered by regression tests and released within two days. Every breaking change is called out in the changelog and the migration guide tells you what to update, so moving to a new release is a version bump, not a project.

Features

50+ Production-Ready Controls

Complete control library: Button, Label with FormattedText, Entry, CollectionView with grouping, drag-to-reorder and grids, ListView with in-place updates, TableView, CarouselView with snap points and bounce, RefreshView, SwipeView, AbsoluteLayout, FlexLayout, shapes with gradients, ControlTemplate, NavigationPage with TitleView, Shell with Windows' top navigation pane, its drop-downs and SearchHandler, 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.

Your Libraries and Handlers Come Too

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. Handlers you register with ConfigureMauiHandlers are used as on the other platforms, and the Linux handlers implement MAUI's handler interfaces, Map signatures and UpdateX platform extensions, so custom handler code ports over.

Syncfusion Controls on Linux

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.

GPU-Native Rendering

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.

Native Wayland, Done Right

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, touch, xdg-activation, fractional scaling that follows the monitor, and Skia-drawn client-side decorations that host MAUI's custom TitleBar, on GNOME, on compositors that draw their own frames such as KDE, and on X11. Desktop portals are spoken natively over D-Bus.

WebView, Blazor Hybrid and HybridWebView

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 the other platforms: your web app served from Resources/Raw, MAUI's JavaScript bridge, InvokeJavaScriptAsync, InvokeDotNet, raw messages, and WebResourceRequested for the app origin and, as on Windows, for http and https requests. The opt-in OpenMaui.Controls.Linux.Blazor package hosts BlazorWebView on the same engine.

Essentials, Including the Hardware

All 36 Essentials services, verified by dotnet/maui's own Essentials device tests: per-app SecureStorage on the Secret Service, 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 and KDE's contact stores; Geocoding works against the Nominatim service you choose.

Measured Compatibility

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 suites of their own, the stub scan fails on any stub a library update brings in that nobody has reviewed, 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,500+ tests, no display required, and every change to the public API is listed in the changelog and migration guide.

Multi-Window, Media, Maps and PDF

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, and Application.ActivateWindow brings one to the front. Opt-in packages add MediaElement on GStreamer with zero-copy VA-API decode, its events and states as on Windows, playback speed, playback controls, HTTP headers on HLS and DASH streams, 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.

Ship It: Templates, Hot Reload, AppImage, deb, rpm, ARM64

dotnet new templates that publish ReadyToRun for a faster start, 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.

Follows the Desktop's Theme

Dark mode and the accent colour come from the desktop and follow it live, through the Settings portal or GNOME's and KDE's own settings: switch the desktop to dark and the app follows, through MAUI's AppThemeBinding and RequestedThemeChanged as on the other platforms, unless the app has set UserAppTheme itself. High contrast is detected, GTK dialogs and menus take the same theme, and text falls back to the installed fonts for emoji, CJK and the other scripts your app's fonts lack.

Diagnostics Built In

When something looks wrong on a user's machine, ask for one command: OPENMAUI_DOCTOR=1 ./MyApp reports .NET, the session and compositor with its Wayland globals, EGL and GL, and the render target that will be chosen, before any window opens. OPENMAUI_DUMP_TREE writes the view tree with bounds and sizes, OPENMAUI_FIRST_CHANCE logs every exception where it is thrown, even the ones a library swallows, OPENMAUI_RENDER_STATS prints frame times (p50, p95, p99), and OPENMAUI_RENDERER forces the GPU, Vulkan or raster target to rule a driver in or out.

Ready to bring your .NET MAUI apps to Linux?

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, built on MAUI 10.0.120, 5,500+ automated tests, dotnet/maui's own device tests passing, 125/125 compatibility scorecard items covered.

Install Now

How OpenMaui compares

The .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,500+ tests; dotnet/maui's own Core and Controls device tests: 2,359 run, 0 failing Very good (self-reported) Moderate Early
Conformance evidence dotnet/maui's own device tests run unchanged (MAUI 10.0.120 Core, Controls, Essentials: 2,640, 0 failing), generated scorecard in the repo, third-party stub scan, golden screenshots at 1.0x-2.0x, end-to-end WebView tests Feature table - -
MAUI handler API MAUI's handler interfaces and Map signatures; registered handlers used as on every MAUI platform - - -
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 GNOME and KDE 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
Touch Wayland (wl_touch) and X11 (XInput 2.2) 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 and http/https WebResourceRequested 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, with window activation Via GTK4 Via GTK -
Packaging One command: AppImage, deb and rpm - - -