OpenMaui.Controls.Linux
1.0.0-rc.1
dotnet add package OpenMaui.Controls.Linux --version 1.0.0-rc.1
NuGet\Install-Package OpenMaui.Controls.Linux -Version 1.0.0-rc.1
<PackageReference Include="OpenMaui.Controls.Linux" Version="1.0.0-rc.1" />
<PackageVersion Include="OpenMaui.Controls.Linux" Version="1.0.0-rc.1" />
<PackageReference Include="OpenMaui.Controls.Linux" />
paket add OpenMaui.Controls.Linux --version 1.0.0-rc.1
#r "nuget: OpenMaui.Controls.Linux, 1.0.0-rc.1"
#:package OpenMaui.Controls.Linux@1.0.0-rc.1
#addin nuget:?package=OpenMaui.Controls.Linux&version=1.0.0-rc.1&prerelease
#tool nuget:?package=OpenMaui.Controls.Linux&version=1.0.0-rc.1&prerelease
OpenMaui Linux Platform
A comprehensive Linux platform implementation for .NET MAUI using SkiaSharp rendering.
Developed by MarketAlly LLC 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 --prerelease
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 MarketAlly LLC. Licensed under the MIT License - see the LICENSE file for details.
Acknowledgments
- MarketAlly LLC - 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)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 1.0.0-rc.1 | 33 | 12/28/2025 |
| 1.0.0-preview.4 | 32 | 12/28/2025 |
| 1.0.0-preview.3 | 106 | 12/21/2025 |
| 1.0.0-preview.2 | 186 | 12/19/2025 |
RC1: Full XAML support with BindableProperty for all controls, Visual State Manager integration, data binding, and XAML styles.