logikonline c6a3f4acc4
All checks were successful
CI / Build (Linux) (push) Successful in 21s
Release / Build and Publish (push) Successful in 20s
chore(perf): bump version to 9.0.40 to match MAUI 9.0.40
Update version from 9.0.0 to 9.0.40 to align precisely with MAUI 9.0.40 release. Update CHANGELOG, package metadata, and templates. Fix thread safety issue in FontFallbackManager by changing _glyphCache from Dictionary to ConcurrentDictionary to prevent race conditions during concurrent glyph lookups.
2026-03-07 01:48:58 -05:00
2026-01-24 03:18:08 +00:00
2026-01-24 06:13:13 +00:00
2026-01-17 08:51:13 +00:00
2026-01-24 06:55:59 +00:00
2026-01-17 00:46:27 +00:00

OpenMaui Linux Platform

A comprehensive Linux platform implementation for .NET MAUI using SkiaSharp rendering.

NuGet License

Developed by MarketAlly Pte Ltd Lead Architect: David H. Friedel Jr.

Overview

This project brings .NET MAUI to Linux desktops with native X11/Wayland support, hardware-accelerated Skia rendering, and full platform service integration.

Key Features

  • Full Control Library: 35+ controls including Button, Label, Entry, CarouselView, RefreshView, SwipeView, and more
  • Native Integration: X11 and Wayland display server support
  • Accessibility: AT-SPI2 screen reader support and high contrast mode
  • Platform Services: Clipboard, file picker, notifications, global hotkeys, drag & drop
  • Input Methods: IBus and XIM support for international text input
  • High DPI: Automatic scale factor detection for GNOME, KDE, and X11

Quick Start

Installation

# Install the templates
dotnet new install OpenMaui.Linux.Templates

# Create a new project (choose one):
dotnet new openmaui-linux -n MyApp           # Code-based UI
dotnet new openmaui-linux-xaml -n MyApp      # XAML-based UI (recommended)

cd MyApp
dotnet run

Manual Installation

dotnet add package OpenMaui.Controls.Linux

XAML Support

OpenMaui fully supports standard .NET MAUI XAML syntax. Use the familiar XAML workflow:

<!-- MainPage.xaml -->
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="MyApp.MainPage">
    <VerticalStackLayout>
        <Label Text="Hello, OpenMaui!" FontSize="32" />
        <Button Text="Click me" Clicked="OnButtonClicked" />
        <Entry Placeholder="Enter text..." />
        <Slider Minimum="0" Maximum="100" />
    </VerticalStackLayout>
</ContentPage>
// MauiProgram.cs
var builder = MauiApp.CreateBuilder();
builder
    .UseMauiApp<App>()
    .UseOpenMauiLinux();  // Enable Linux with XAML support

Supported Controls

Category Controls
Basic Button, Label, Entry, Editor, CheckBox, Switch, RadioButton
Layout StackLayout, ScrollView, Border, Page
Selection Picker, DatePicker, TimePicker, Slider, Stepper
Display Image, ImageButton, ActivityIndicator, ProgressBar
Collection CollectionView, CarouselView, IndicatorView
Gesture SwipeView, RefreshView
Navigation NavigationPage, TabbedPage, FlyoutPage, Shell
Menu MenuBar, MenuFlyout, MenuItem
Graphics GraphicsView, Border

Platform Services

Service Description
ClipboardService System clipboard access
FilePickerService Native file open dialogs
FolderPickerService Folder selection dialogs
NotificationService Desktop notifications (libnotify)
GlobalHotkeyService System-wide keyboard shortcuts
DragDropService XDND drag and drop protocol
LauncherService Open URLs and files
ShareService Share content with other apps
SecureStorageService Encrypted credential storage
PreferencesService Application settings
BrowserService Open URLs in default browser
EmailService Compose emails
SystemTrayService System tray icons

Accessibility

  • AT-SPI2: Screen reader support for ORCA and other assistive technologies
  • High Contrast: Automatic detection and color palette support
  • Keyboard Navigation: Full keyboard accessibility

Requirements

  • .NET 9.0 SDK or later
  • Linux (kernel 5.4+)
  • X11 or Wayland
  • SkiaSharp native libraries

System Dependencies

Ubuntu/Debian:

sudo apt-get install libx11-dev libxrandr-dev libxcursor-dev libxi-dev libgl1-mesa-dev libfontconfig1-dev

Fedora:

sudo dnf install libX11-devel libXrandr-devel libXcursor-devel libXi-devel mesa-libGL-devel fontconfig-devel

Documentation

Sample Applications

Full sample applications are available in the maui-linux-samples repository:

Sample Description
TodoApp Task manager with NavigationPage, XAML data binding, CollectionView
ShellDemo Control showcase with Shell navigation and flyout menu

Quick Example

using OpenMaui.Platform.Linux;

var app = new LinuxApplication();

app.MainPage = new ContentPage
{
    Content = new VerticalStackLayout
    {
        Spacing = 10,
        Children =
        {
            new Label
            {
                Text = "Welcome to MAUI on Linux!",
                FontSize = 24
            },
            new Button
            {
                Text = "Click Me"
            },
            new Entry
            {
                Placeholder = "Enter your name"
            }
        }
    }
};

app.Run();

Building from Source

git clone https://git.marketally.ai/open-maui/maui-linux.git
cd maui-linux
dotnet build
dotnet test

Contributing

We welcome contributions! Please see our Contributing Guide for details.

Architecture

┌─────────────────────────────────────────────────┐
│                  .NET MAUI                       │
│              (Virtual Views)                     │
├─────────────────────────────────────────────────┤
│                  Handlers                        │
│         (Platform Abstraction)                   │
├─────────────────────────────────────────────────┤
│              Skia Views                          │
│        (SkiaButton, SkiaLabel, etc.)            │
├─────────────────────────────────────────────────┤
│           SkiaSharp Rendering                    │
│         (Hardware Accelerated)                   │
├─────────────────────────────────────────────────┤
│              X11 / Wayland                       │
│          (Display Server)                        │
└─────────────────────────────────────────────────┘

Styling and Data Binding

OpenMaui supports the full MAUI styling and data binding infrastructure:

XAML Styles

<ContentPage.Resources>
    <ResourceDictionary>
        <Color x:Key="PrimaryColor">#5C6BC0</Color>
        <Style TargetType="Button">
            <Setter Property="BackgroundColor" Value="{StaticResource PrimaryColor}" />
            <Setter Property="TextColor" Value="White" />
        </Style>
    </ResourceDictionary>
</ContentPage.Resources>

Data Binding

<Label Text="{Binding Title}" />
<Entry Text="{Binding Username, Mode=TwoWay}" />
<Button Command="{Binding SaveCommand}" IsEnabled="{Binding CanSave}" />

Visual State Manager

All interactive controls support VSM states: Normal, PointerOver, Pressed, Focused, Disabled.

<Button Text="Hover Me">
    <VisualStateManager.VisualStateGroups>
        <VisualStateGroup x:Name="CommonStates">
            <VisualState x:Name="Normal">
                <VisualState.Setters>
                    <Setter Property="BackgroundColor" Value="#2196F3"/>
                </VisualState.Setters>
            </VisualState>
            <VisualState x:Name="PointerOver">
                <VisualState.Setters>
                    <Setter Property="BackgroundColor" Value="#42A5F5"/>
                </VisualState.Setters>
            </VisualState>
        </VisualStateGroup>
    </VisualStateManager.VisualStateGroups>
</Button>

Roadmap

  • Core control library (35+ controls)
  • Platform services integration
  • Accessibility (AT-SPI2)
  • Input method support (IBus/XIM)
  • High DPI support
  • Drag and drop
  • Global hotkeys
  • BindableProperty for all controls
  • Visual State Manager integration
  • XAML styles and StaticResource
  • Data binding (OneWay, TwoWay, IValueConverter)
  • Complete Wayland support
  • Hardware video acceleration
  • GTK4 interop layer

License

Copyright (c) 2025-2026 MarketAlly Pte Ltd. Licensed under the MIT License - see the LICENSE file for details.

Acknowledgments

MIT License

Copyright (c) 2025 MarketAlly Pte Ltd

Lead Architect: David H. Friedel Jr.

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
Description
A comprehensive Linux platform implementation for .NET MAUI.
http://www.openmaui.net
Readme MIT 4.7 MiB