cross-platform winforms for .net · open source · beta

WinForms in. Cross-platform out.

Majorsilence.Forms is a cross-platform WinForms library for .NET — a Windows Forms framework that is ready to use today, for new apps and for moving legacy and modern WinForms applications onto a modern stack. Keep the Forms, controls, event handlers, and *.Designer.cs files you already have — run on Linux, run on macOS, and run on Windows from one build — Linux and macOS are first-class, and Android, iOS and WebAssembly support is growing every release through Avalonia and Uno Platform. Seven host backends share one control model — including a GTK 4 window on Linux, a terminal, and WinForms and WPF bridges that let a Windows app migrate one control at a time.

Avalonia Uno Platform GTK 4 Terminal WinForms · WPF Headless SkiaSharp .NET 10
7
Platform backends
Win · macOS · Linux
Desktop, out of the box
Android · iOS · Wasm
Growing every release
MIT
Open source
why majorsilence.forms

Collapse the migration, not your codebase.

Migrating a WinForms app usually means a ground-up rewrite in a new UI paradigm — XAML, MVVM, the web. That's expensive, risky, and throws away years of working business logic and UX. Majorsilence.Forms mirrors the WinForms API surface and ships a compatibility layer so your existing forms, controls, and code move over with far less churn.

Reuse, don't rewrite

The same control model and event-driven code you wrote in WinForms. No XAML, no forced MVVM rewrite, no relearning the framework.

Cross-platform by construction

Everything is drawn with SkiaSharp and runs on a swappable host backend — Avalonia by default for desktop, with its own Android/iOS/Browser targets as one path to mobile and web, Uno Platform as another, and a real GTK 4 window on Linux.

Migrate one control at a time

Windows-only WinForms and WPF backends host Majorsilence.Forms controls inside the app you already ship — ToWinFormsControl(), ToWpfElement() — on .NET 10 or .NET Framework 4.8. Port piece by piece, then swap the backend to go cross-platform.

Theme it with CSS

A small, fully documented CSS subset sets every color and font token and styles controls per type and state. Edit live in Theme Studio, and apply the same sheet to real WinForms or native Avalonia controls in a mixed app.

MVVM when you want it

Majorsilence.Forms.Mvvm wires INotifyPropertyChanged and ICommand to controls without reflection — trim- and AOT-safe, and happy alongside CommunityToolkit.Mvvm. Opt in; never required.

Modern under the hood

GPU-accelerated Skia rendering, HiDPI, touch gestures, animation frames, current .NET — plus Majorsilence.Forms.Essentials for secure storage, text to speech, and launching links on every platform.

Testable and accessible

One automation tree drives in-process UI tests, a W3C WebDriver server for Selenium, an MCP server for AI assistants, Windows screen readers, and an ARIA DOM mirror in the browser.

Async dialogs, everywhere

Every modal has an async twin — ShowDialogAsync, MessageBox.ShowAsync — so the same code runs in the browser and on phones, where a blocking loop isn't possible. A bundled analyzer flags the blocking calls before you ship.

platform support

Desktop is solid. Mobile and web are growing.

An honest status per platform. The member-by-member detail lives in the compatibility matrix.

Linux — supported

Avalonia on X11 or Wayland, or a real GTK 4 window, with a WebKitGTK WebBrowser. Exercised in CI on every change. Linux guide.

macOS — supported

Native NSWindow on Apple Silicon and Intel, Retina rendering, trackpad gestures, WKWebView and Keychain. macOS guide.

Windows — supported

Run on Avalonia or Uno, or adopt it one control at a time inside an existing WinForms or WPF app, including .NET Framework 4.8.

WebAssembly — working

The whole control gallery runs live in your browser, with async dialogs and an ARIA mirror for screen readers.

Android — growing

Boots, taps, scaling, touch scrolling and the soft keyboard are confirmed on a device. Rotation and full control coverage are still being exercised.

iOS — early

Compiles and launches in a CI simulator smoke check; not yet run interactively on a device. Expect a shakeout.

how it works

One control model, a swappable host underneath.

Majorsilence.Forms owns the controls and rendering; the backend only puts pixels on screen and delivers input. That seam is what lets the same app target Avalonia today and Uno tomorrow — or run unchanged inside a terminal. The core multi-targets net8.0, net10.0 and netstandard2.0; the WinForms and WPF backends add net48 so a .NET Framework 4.8 app can host it too.

Your app (Forms, controls, Designer files — the WinForms model you know) │ Majorsilence.Forms (controls + WinForms-compatible API, drawn with SkiaSharp) │ Swappable host backend ├─ Avalonia → Windows · macOS · Linux (default) · also Android · iOS · Browser ├─ Uno → desktop · iOS · Android · WebAssembly ├─ GTK 4 → Linux-first real GTK window (gir.core), also Windows/macOS with the GTK runtime ├─ Terminal → the form fills a terminal: Kitty graphics, Sixel, or Unicode block elements ├─ WinForms → Windows-only migration bridge: embed in an existing WinForms app, port in steps ├─ WPF → Windows-only migration bridge, same shape, for WPF apps └─ Headless → offscreen rendering for tests / CI
a form looks exactly like you'd expect

Program.cs, unchanged.

MainForm.cs
using Majorsilence.Forms;

public class MainForm : Form
{
}
Program.cs run
static void Main (string [] args)
{
    Application.Run (new MainForm ());
}
samples

Real apps, not toy demos.

Explore every sample in the repository — a Windows Explorer clone, an Outlook clone, a client/server point-of-sale app with its own API and database, the same full control gallery running on desktop, Uno, GTK 4, the browser, Android, iOS, WPF and in a terminal, a live CSS Theme Studio, bi-directional WinForms interop, and Majorsilence.Forms embedded inside host Avalonia, Uno, GTK 4 and WinForms apps.

start here

Answering the question that brought you here.

Most people arrive looking for one specific thing — whether Windows Forms can run on Linux, what a WinForms compatibility layer really costs, or how this compares to a rewrite in MAUI or Avalonia. Each of those has its own page.

Cross-platform WinForms, explained

Why System.Windows.Forms is Windows-only, the three ways around it, and what an API-compatible reimplementation gives up.

Can WinForms run on Linux?

Not as-is — Mono's port is long gone and GDI+ isn't there. What works instead on Ubuntu, Fedora and Debian, and how to ship it.

Can WinForms run on macOS?

Native NSWindow on Apple Silicon and Intel, what feels un-Mac-like about it, and packaging a .app.

Migrating an existing app

The majorsilence-migrate CLI does the mechanical rewrite — namespaces, project files, resources — as a readable git diff.

WinForms alternatives compared

MAUI, Avalonia, Uno Platform, Eto.Forms, WPF and Wine — measured by how much of your existing code each one keeps.

FAQ

Do Designer files still work? Is there a visual designer? What about VB.NET, DataGridView, System.Drawing, and production readiness?