Duxel.App
0.2.2-preview
dotnet add package Duxel.App --version 0.2.2-preview
NuGet\Install-Package Duxel.App -Version 0.2.2-preview
<PackageReference Include="Duxel.App" Version="0.2.2-preview" />
<PackageVersion Include="Duxel.App" Version="0.2.2-preview" />
<PackageReference Include="Duxel.App" />
paket add Duxel.App --version 0.2.2-preview
#r "nuget: Duxel.App, 0.2.2-preview"
#:package Duxel.App@0.2.2-preview
#addin nuget:?package=Duxel.App&version=0.2.2-preview&prerelease
#tool nuget:?package=Duxel.App&version=0.2.2-preview&prerelease
Duxel
<p align="center"> <img src="logo.svg" alt="Duxel logo" width="615" /> </p>
Immediate-mode GUI framework for .NET 10, using a Vulkan renderer with a Windows-native platform backend.
Current package version: 0.2.2-preview
- 한국어 문서: README.ko.md
- Version history: docs/version-history.md · 한국어
- Duxel agent reference: docs/duxel-agent-reference.md · 한국어
What it provides
- Immediate-mode widget API (
UiImmediateContext) withUiScreen.Render(...)lifecycle. - Vulkan backend with profile-based defaults (
Display/Render) and configurable MSAA. - Windows-native window/input backend (keyboard, mouse, wheel, IME, clipboard).
- NativeAOT-friendly runtime patterns.
- UI DSL (
.ui) parser/runtime and source-generator path.
Packages
| Package | Purpose |
|---|---|
Duxel.App |
Core app facade and shared runtime pipeline |
Duxel.Windows.App |
Windows platform runner package (DuxelWindowsApp.Run) |
Quick start (FBA, Windows)
Create hello.cs:
#:property TargetFramework=net10.0
#:property platform=windows
#:package Duxel.$(platform).App@*-*
using Duxel.App;
using Duxel.Core;
using Duxel.Windows.App;
DuxelWindowsApp.Run(new DuxelAppOptions
{
Window = new DuxelWindowOptions { Title = "Hello Duxel" },
Screen = new HelloScreen()
});
public sealed class HelloScreen : UiScreen
{
public override void Render(UiImmediateContext ui)
{
ui.BeginWindow("Hello");
ui.Text("Hello, Duxel!");
ui.EndWindow();
}
}
Run:
dotnet run hello.cs
Featured FBA showcase
If you want to see Duxel beyond a hello-world window, start with these representative FBA samples:
samples/fba/all_features.cs— the broad widget gallery with typography, layout, popup/context, input diagnostics, item state, multi-select, layers, drawing, image, and markdown showcase windows, now openingMarkdown Studioon first launch instead of a blank surface.samples/fba/ui_mixed_stress.cs— a balanced multi-window showcase that fills the screen with controls, forms, long lists, data tables, text rendering, and a dense canvas stress area.samples/fba/Duxel_perf_test_fba.cs— a polygon stress-test sample with live controls for VSync, MSAA, cache toggles, polygon settings, and profile-oriented renderer checks.
<p align="center"> <img src="captures/all-features-showcase.png" alt="Duxel all features FBA sample" width="1100" /> </p>
The screenshot above was captured from all_features.cs, which now opens the Markdown Studio surface on first launch while the menu bar still exposes the wider component gallery.
<p align="center"> <img src="captures/ui-mixed-stress-showcase.png" alt="Duxel Mixed UI Stress FBA sample" width="1100" /> </p>
The screenshot above was captured from ui_mixed_stress.cs, a representative FBA sample that shows how Duxel can compose several tool-style windows, high-volume lists and tables, and custom drawing in a single frame.
<p align="center"> <img src="captures/duxel-perf-test-showcase.png" alt="Duxel performance test FBA sample" width="1100" /> </p>
The performance screenshot was captured from Duxel_perf_test_fba.cs with a higher initial polygon count so the stress scene is visible immediately.
Samples
- Project sample:
samples/Duxel.Sampledotnet run --project samples/Duxel.Sample/
- FBA samples:
samples/fba/*.csdotnet run samples/fba/all_features.cs./run-fba.ps1 samples/fba/all_features.cs(local project reference; NativeAOT by default)all_features.csnow opensMarkdown Studioby default and still includes dedicated typography, layout, popup/context, input-query, item-status, multi-select, and layer/animation showcase windows.
DSL
Duxel supports declarative .ui files (indent-based tree) and runtime/state bindings.
- DSL reference: docs/ui-dsl.md · 한국어
- Agent reference: docs/duxel-agent-reference.md · 한국어
- FBA getting started: docs/getting-started-fba.md · 한국어
- FBA reference guide: docs/fba-reference-guide.md · 한국어
- FBA sample catalog: docs/fba-run-samples.md · 한국어
- Custom widgets: docs/custom-widgets.md · 한국어
- Design notes (Korean): docs/design.ko.md
- Optimization policy (Korean): docs/optimization-policy.ko.md
Build
dotnet build Duxel.slnx -c Release
License
MIT
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. 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. |
-
net10.0
- No dependencies.
NuGet packages (1)
Showing the top 1 NuGet packages that depend on Duxel.App:
| Package | Downloads |
|---|---|
|
Duxel.Windows.App
Windows all-in-one Duxel package. Install this single package to build and run Duxel apps on Windows. |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 0.2.2-preview | 48 | 4/2/2026 |
| 0.2.1-preview | 44 | 3/25/2026 |
| 0.2.0-preview | 49 | 3/9/2026 |
| 0.1.15-preview | 44 | 3/4/2026 |
| 0.1.14-preview | 53 | 2/27/2026 |
| 0.1.13-preview | 51 | 2/20/2026 |
| 0.1.12-preview | 54 | 2/20/2026 |
| 0.1.11-preview | 51 | 2/17/2026 |
| 0.1.10-preview | 72 | 2/15/2026 |
| 0.1.9-preview | 51 | 2/14/2026 |
| 0.1.8-preview | 51 | 2/14/2026 |
| 0.1.7-preview | 52 | 2/14/2026 |
| 0.1.6-preview | 54 | 2/12/2026 |
| 0.1.5-preview | 60 | 2/7/2026 |
| 0.1.4-preview | 55 | 1/30/2026 |