OpenMaui Linux - .NET MAUI on Linux with SkiaSharp rendering
Go to file
logikonline 1d55ac672a Preview 3: Complete control implementation with XAML data binding
Major milestone adding full control functionality:

Controls Enhanced:
- Entry/Editor: Full keyboard input, cursor navigation, selection, clipboard
- CollectionView: Data binding, selection highlighting, scrolling
- CheckBox/Switch/Slider: Interactive state management
- Picker/DatePicker/TimePicker: Dropdown selection with popup overlays
- ProgressBar/ActivityIndicator: Animated progress display
- Button: Press/release visual states
- Border/Frame: Rounded corners, stroke styling
- Label: Text wrapping, alignment, decorations
- Grid/StackLayout: Margin and padding support

Features Added:
- DisplayAlert dialogs with button actions
- NavigationPage with toolbar and back navigation
- Shell with flyout menu navigation
- XAML value converters for data binding
- Margin support in all layout containers
- Popup overlay system for pickers

New Samples:
- TodoApp: Full CRUD task manager with NavigationPage
- ShellDemo: Comprehensive control showcase

Removed:
- ControlGallery (replaced by ShellDemo)
- LinuxDemo (replaced by TodoApp)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-21 13:26:56 -05:00
.github Bump actions/checkout from 4 to 6 (#3) 2025-12-19 04:52:58 -05:00
Converters Preview 3: Complete control implementation with XAML data binding 2025-12-21 13:26:56 -05:00
Extensions Initial commit: .NET MAUI Linux Platform 2025-12-19 09:30:16 +00:00
Handlers Preview 3: Complete control implementation with XAML data binding 2025-12-21 13:26:56 -05:00
Hosting Preview 3: Complete control implementation with XAML data binding 2025-12-21 13:26:56 -05:00
Input Preview 3: Complete control implementation with XAML data binding 2025-12-21 13:26:56 -05:00
Interop Initial commit: .NET MAUI Linux Platform 2025-12-19 09:30:16 +00:00
Rendering Preview 3: Complete control implementation with XAML data binding 2025-12-21 13:26:56 -05:00
Services Preview 3: Complete control implementation with XAML data binding 2025-12-21 13:26:56 -05:00
Views Preview 3: Complete control implementation with XAML data binding 2025-12-21 13:26:56 -05:00
Window Preview 3: Complete control implementation with XAML data binding 2025-12-21 13:26:56 -05:00
docs Add control gallery sample and roadmap documentation 2025-12-19 05:24:35 -05:00
samples Preview 3: Complete control implementation with XAML data binding 2025-12-21 13:26:56 -05:00
templates Add control gallery sample and roadmap documentation 2025-12-19 05:24:35 -05:00
tests Rename package to OpenMaui.Controls.Linux 2025-12-19 05:01:34 -05:00
vsix Add control gallery sample and roadmap documentation 2025-12-19 05:24:35 -05:00
.gitignore Initial commit: .NET MAUI Linux Platform 2025-12-19 09:30:16 +00:00
CONTRIBUTING.md Update attribution to MarketAlly LLC and David H. Friedel Jr. 2025-12-19 04:36:16 -05:00
LICENSE Update attribution to MarketAlly LLC and David H. Friedel Jr. 2025-12-19 04:36:16 -05:00
LinuxApplication.cs Preview 3: Complete control implementation with XAML data binding 2025-12-21 13:26:56 -05:00
OpenMaui.Controls.Linux.csproj Preview 3: Complete control implementation with XAML data binding 2025-12-21 13:26:56 -05:00
OpenMaui.Controls.Linux.nuspec Rename package to OpenMaui.Controls.Linux 2025-12-19 05:01:34 -05:00
README.md Add full XAML support for .NET MAUI compatibility 2025-12-19 05:17:50 -05:00
out.xml Preview 3: Complete control implementation with XAML data binding 2025-12-21 13:26:56 -05:00

README.md

OpenMaui Linux Platform

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

Build Status NuGet License

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:

<!-- 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 Application

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://github.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)                        │
└─────────────────────────────────────────────────┘

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
  • 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