Platform Detection
The easiest way to support all desktop platforms is using automatic detection:src/Avalonia.Desktop/AppBuilderDesktopExtensions.cs:8
Windows Support
Platform Implementation
Avalonia’s Windows support is based on the Win32 API:- Backend:
Avalonia.Win32 - Rendering: Skia + Direct2D
- Minimum Version: Windows 7 or later
- Architecture: x86, x64, ARM64
Configuration
- Automatic
- Explicit
Windows Platform Options
Windows Features
- DPI Awareness: Automatic per-monitor DPI scaling
- Window Composition: DirectComposition and WinUI Composition
- Native Menus: Windows menu bar support
- System Tray: Notification area icons
- Jump Lists: Taskbar jump list support
- File Dialogs: Native Windows file pickers
- Drag & Drop: Full Windows drag-drop support
- IME Support: Input Method Editor for Asian languages
src/Windows/Avalonia.Win32/Win32Platform.cs:27
macOS Support
Platform Implementation
Avalonia’s macOS support uses the native AppKit framework:- Backend:
Avalonia.Native - Rendering: Skia + Metal
- Minimum Version: macOS 10.13 (High Sierra) or later
- Architecture: x64, ARM64 (Apple Silicon)
Configuration
- Automatic
- Explicit
macOS Features
- Native Look: Integrates with macOS appearance
- Menu Bar: Native macOS menu bar (File, Edit, etc.)
- Dark Mode: Automatic light/dark theme support
- Retina Display: HiDPI display support
- Mission Control: Full-screen and window management
- System Dialogs: Native file pickers and alerts
- Dock Integration: Application dock icon and menus
- Metal Rendering: Hardware-accelerated graphics
src/Avalonia.Native/AvaloniaNativePlatformExtensions.cs:11
Linux Support
Platform Implementation
Avalonia supports Linux through X11 and Wayland:- Backend:
Avalonia.X11andAvalonia.FreeDesktop - Rendering: Skia + OpenGL
- Desktop Environments: GNOME, KDE, XFCE, etc.
- Display Servers: X11 and Wayland
Configuration
- Automatic
- Explicit
Linux Features
- X11 Support: Full X11 windowing system integration
- Wayland Support: Experimental Wayland support
- DBus Integration: System integration via DBus
- GTK Dialogs: Native file picker integration
- Freedesktop Standards: XDG desktop integration
- Accessibility: AT-SPI accessibility support
- IME Support: Multiple input method frameworks
- System Tray: StatusNotifier/AppIndicator support
src/Avalonia.X11/X11Platform.cs:516
Desktop Application Lifetime
UseClassicDesktopStyleApplicationLifetime for desktop apps:
Window Management
Desktop platforms support full window management:Native Menus
Create native menu bars on desktop platforms:System Tray
Add system tray/notification area icons:File System Access
Use the Storage API for cross-platform file access:Platform-Specific Code
Detect and handle platform-specific behavior:- Runtime Detection
- Compile-Time
Performance Optimization
Rendering Options
Optimize rendering for desktop platforms:Memory Management
Desktop platforms have more memory available:Deployment
Windows Deployment
- Standalone EXE: Self-contained or framework-dependent
- Installer: MSI, MSIX, or third-party installers
- ClickOnce: Web-deployed applications
macOS Deployment
- Application Bundle:
.appbundle - DMG: Disk image for distribution
- App Store: Mac App Store deployment
- Code Signing: Required for macOS 10.15+
Linux Deployment
- AppImage: Portable application format
- Snap: Universal Linux package
- Flatpak: Sandboxed application
- DEB/RPM: Distribution-specific packages
Next Steps
Platform-Specific Features
Access native desktop APIs
Mobile Platforms
Build for iOS and Android