Terminal User Guide

XenoAtom.Terminal.UI is a modern retained-mode terminal UI framework built on top of XenoAtom.Terminal. It supports both:

  • Inline widgets that render as part of normal terminal output (Terminal.Write, Terminal.Live)
  • Fullscreen applications (alternate screen, focus navigation, routed input, dialogs, etc.)

This guide documents the concepts, features, and controls of the library.

Fullscreen demo screenshot

Quick start

Ecosystem

Terminal.UI is built on:

  • XenoAtom.Terminal - terminal I/O, input events, hosting (inline + fullscreen)
  • XenoAtom.Ansi - ANSI/VT primitives and markup used by the Markup control and parsers

See also:

Hosting & integration

  • Hosting (inline vs fullscreen, update loops)
  • Prompts (inline prompts built on top of Terminal.Live)

Core concepts

  • Visual Tree (Visuals, fluent API, dynamic composition)
  • Binding (State<T>, bindable properties, dependency tracking)
  • Data Templating (DataTemplates, DataPresenter, item templates)
  • Culture (culture-aware value formatting)
  • Layout (layout protocol, alignment, margin/padding)
  • Input (keyboard/mouse, focus, routed events, capture)
  • Commands (commands, key sequences, key hints with CommandBar)
  • Styling (Theme, styles, environment)
  • Rendering (cell buffer, diff renderer, performance)
  • Scrolling (ScrollViewer, scroll models, scrollbars)
  • Text Editing (TextBox/TextArea/MaskedInput and the text subsystem)
  • Undo/Redo (undo/redo for text editors)
  • Markup (markup syntax, semantic tokens, MarkupTextParser)
  • Debugging (debug overlay, performance metrics)

Controls reference

Samples

The samples folder contains end-to-end demos:

  • Demos (screenshots, videos, and GitHub links)
  • samples/FullscreenDemo: fullscreen UI showcase.
  • samples/ControlsDemo: catalog-style demo.
  • samples/InlineLiveDemo: inline/live example (interactive).

Specs and design notes

The site/docs/specs folder contains deeper design documents and implementation notes used during development: