OpenMaui.Controls.Linux
9.0.40
See the version list below for details.
dotnet add package OpenMaui.Controls.Linux --version 9.0.40
NuGet\Install-Package OpenMaui.Controls.Linux -Version 9.0.40
<PackageReference Include="OpenMaui.Controls.Linux" Version="9.0.40" />
<PackageVersion Include="OpenMaui.Controls.Linux" Version="9.0.40" />
<PackageReference Include="OpenMaui.Controls.Linux" />
paket add OpenMaui.Controls.Linux --version 9.0.40
#r "nuget: OpenMaui.Controls.Linux, 9.0.40"
#:package OpenMaui.Controls.Linux@9.0.40
#addin nuget:?package=OpenMaui.Controls.Linux&version=9.0.40
#tool nuget:?package=OpenMaui.Controls.Linux&version=9.0.40
OpenMaui Linux Platform
A comprehensive Linux platform implementation for .NET MAUI using SkiaSharp rendering.
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:
<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.com/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
- MarketAlly Pte Ltd - Project development and maintenance
- SkiaSharp - 2D graphics library
- .NET MAUI - Cross-platform UI framework
- The .NET community
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net9.0 is compatible. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net9.0
- HarfBuzzSharp (>= 7.3.0.3)
- HarfBuzzSharp.NativeAssets.Linux (>= 7.3.0.3)
- Microsoft.Maui.Controls (>= 9.0.40)
- Microsoft.Maui.Graphics (>= 9.0.40)
- Microsoft.Maui.Graphics.Skia (>= 9.0.40)
- SkiaSharp (>= 2.88.9)
- SkiaSharp.NativeAssets.Linux (>= 2.88.9)
- SkiaSharp.Views.Desktop.Common (>= 2.88.9)
- Svg.Skia (>= 1.0.0)
NuGet packages (2)
Showing the top 2 NuGet packages that depend on OpenMaui.Controls.Linux:
| Package | Downloads |
|---|---|
|
OpenMaui.Controls.Linux.MediaElement
Linux backend for CommunityToolkit.Maui.MediaElement. Adds .UseLinuxMediaElement() to your MAUI app builder; renders video frames via GStreamer (playbin + appsink) into a SkiaSharp surface. Requires GStreamer 1.x + plugin sets installed on the host (gstreamer1-plugins-good/bad/ugly/libav; gstreamer1-vaapi for HW decode). Opt-in: install this package only if your app uses MediaElement on Linux. |
|
|
OpenMaui.Controls.Linux.Maps
Linux backend for Microsoft.Maui.Controls.Maps. Adds .UseLinuxMaps() to your MAUI app builder; renders OpenStreetMap raster tiles into a SkiaSharp surface with pan/zoom, pin and polyline overlays. Also exposes a standalone SkiaMap view for code-first map UI. Tiles are fetched from tile.openstreetmap.org and cached under $XDG_CACHE_HOME. Opt-in: install this package only if your app uses Maps on Linux. |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 10.0.70.3 | 77 | 6/3/2026 |
| 10.0.70.1 | 64 | 6/2/2026 |
| 10.0.60.14 | 129 | 5/16/2026 |
| 10.0.60.9 | 149 | 5/6/2026 |
| 10.0.50.7 | 202 | 3/29/2026 |
| 10.0.41.13 | 168 | 3/10/2026 |
| 10.0.41.5 | 114 | 3/9/2026 |
| 10.0.41.3 | 107 | 3/9/2026 |
| 10.0.41.2 | 103 | 3/8/2026 |
| 9.0.40 | 116 | 3/8/2026 |
| 1.0.0-rc.1 | 98 | 12/28/2025 |
| 1.0.0-preview.4 | 91 | 12/28/2025 |
| 1.0.0-preview.3 | 138 | 12/21/2025 |
| 1.0.0-preview.2 | 230 | 12/19/2025 |
9.0: Version aligned with .NET 9 / MAUI 9. 100% .NET MAUI API compliance - all public APIs use MAUI types. Full XAML support, Visual State Manager, data binding, XAML styles. 541 passing tests. Previously released as 1.0.0.