Cross-platform terminal UI library for .NET 10

One control tree.
Every surface.

Define a terminal user interface in XAML or C#. Render the same character-cell grid in terminals, browsers, desktop frameworks, native SDL2 windows, or any SkiaSharp canvas.

  • MIT licensed
  • XAML and C# authoring
  • WPF-inspired control model
Tedd.TUI · renderer output
Tedd.TUI controls rendered as a character-cell interface
One UI definition. Identical cells, colors, layout, and interaction semantics across supported hosts.

.NET 10Current target framework

8 host familiesTerminal, web, desktop, and native

50+ controlsLayouts, inputs, data, and overlays

MITOpen-source library

Start with the core and one host

Install only the packages your application requires.

The core package contains controls, layout, binding, routed events, templates, and XAML loading. Add a platform package for each required rendering target.

PACKAGE INSTALLATIONPowerShell · Bash · cmd
Core librarydotnet add package Tedd.TUI
Terminal hostdotnet add package Tedd.TUI.Platform.Console

The console host selects the appropriate terminal backend at run time. Other host packages can be installed independently.

Platform-independent by construction

Application logic stops at the cell grid.

Tedd.TUI resolves layout and state before a host renders the result. Platform adapters remain thin and application code remains portable.

XAMLapp.xaml
<!-- The same file runs on every host. -->
<TuiWindow>
  <Border BoxStyle="Double">
    <StackPanel>
      <TextBlock Text="System status" />
      <ProgressBar Value="{Binding Progress}" />
      <Button Content="Cancel" />
    </StackPanel>
  </Border>
</TuiWindow>
C#Program.cs
var window = new TuiWindow
{
    Content = new Border
    {
        BoxStyle = BoxStyle.Double,
        Child = new StackPanel
        {
            // Add controls or load XAML.
        }
    }
};

new TuiApp(window).Run();

Eight host families

Select a renderer without redesigning the interface.

Each host consumes the same resolved character-cell grid and returns keyboard, pointer, and wheel input in cell coordinates.

02
◇

Blazor

Canvas or DOM rendering in the browser, with Razor components and XAML loading.

Tedd.TUI.Platform.Blazor
03
▦

WPF

Character-cell rendering inside WPF, including live preview in the Visual Studio XAML designer.

Tedd.TUI.Platform.Wpf
04
△

Avalonia

SkiaSharp-backed hosting for Windows, macOS, and Linux applications.

Tedd.TUI.Platform.Avalonia
05
⊞

WinUI 3

A Windows App SDK control backed by the shared Skia cell renderer.

Tedd.TUI.Platform.WinUI
06
⌁

.NET MAUI

A cross-platform view for Android, iOS, Mac Catalyst, and Windows.

Tedd.TUI.Platform.Maui
07
◫

SkiaSharp

Direct rendering to any SKCanvas, including headless PNG generation.

Tedd.TUI.Platform.Skia
08
▣

SDL2

A native SDL2 window or integration with an existing SDL render loop.

Tedd.TUI.Platform.Sdl2

WPF-inspired composition

Controls, layout, and interaction use one coherent model.

Dependency properties, inherited data context, templates, triggers, routed events, focus management, and overlays support composable application interfaces.

LayoutGrid · StackPanel · DockPanel · WrapPanel · Canvas · UniformGrid · GridSplitter
InputButton · TextBox · PasswordBox · CheckBox · RadioButton · Slider · NumericUpDown · DatePicker · TimePicker
DataDataGrid · Table · ListBox · TreeView · ComboBox · ItemsControl
ApplicationMenuBar · TabControl · StatusBar · InfoBar · ToolTip · Popup · DialogBox
ContentTextBlock · Label · Image · MarkdownView · CodeDocument · ProgressBar · ActivityIndicator

Rich content within the grid

Text cells are the base layer, not the limit.

Render documents, source code, and decoded images through the same host-independent control tree.

MarkdownView rendering a heading, paragraphs, a list, quotation, and table
01

Markdown

MarkdownView renders headings, emphasis, lists, quotations, tables, links, code fences, and images. Themes control every semantic style.

CodeDocument rendering syntax-highlighted C sharp and JSON source
02

Source code

CodeDocument provides Prism-style tokenization with 76 bundled language grammars and configurable token colors.

The same image rendered with a terminal graphics protocol and a truecolor cell fallback
03

Images

The Image control uses Sixel, Kitty, or iTerm2 graphics where available and a truecolor half-block representation elsewhere.

Deterministic rendering contract

Built for long-running interactive applications.

The rendering pipeline computes a virtual character grid. Terminal renderers compare consecutive frames and emit only changed cells. Event-driven terminal hosts remain idle until input or invalidation requires work.

  • Layout: recursive measure and arrange passes with clipping.
  • Rendering: double-buffered cell output and differential updates.
  • Input: tunneled and bubbling routed events with mouse capture.
  • State: dependency properties, binding, templates, and triggers.
Tedd.TUI · form controls
Tedd.TUI form controls rendered in a terminal
Renderer output from the library’s documentation screenshot project.

Reference material

Proceed from installation to host-specific integration.

Tedd.TUI for .NET 10

Define the interface once.
Select the host for each target.

Install the core library and the host package required by your application.