XenoAtom.Terminal 1.5.1

Prefix Reserved
dotnet add package XenoAtom.Terminal --version 1.5.1
                    
NuGet\Install-Package XenoAtom.Terminal -Version 1.5.1
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="XenoAtom.Terminal" Version="1.5.1" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="XenoAtom.Terminal" Version="1.5.1" />
                    
Directory.Packages.props
<PackageReference Include="XenoAtom.Terminal" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add XenoAtom.Terminal --version 1.5.1
                    
#r "nuget: XenoAtom.Terminal, 1.5.1"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package XenoAtom.Terminal@1.5.1
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=XenoAtom.Terminal&version=1.5.1
                    
Install as a Cake Addin
#tool nuget:?package=XenoAtom.Terminal&version=1.5.1
                    
Install as a Cake Tool

XenoAtom.Terminal ci NuGet

<img align="right" width="256px" height="256px" src="https://raw.githubusercontent.com/XenoAtom/XenoAtom.Terminal/main/img/XenoAtom.Terminal.png">

XenoAtom.Terminal is a modern replacement for System.Console designed for TUI/CLI apps: serialized output, rich ANSI/markup rendering, unified input events, and deterministic tests.

๐Ÿš€ Quick start

using XenoAtom.Terminal;

Terminal.WriteLine("Hello");
Terminal.WriteMarkup("[bold green]Hello[/] [gray]world[/]!");

โœจ Features

  • Console-compatible API surface: Title, cursor, window, ReadKey/ReadLine-style workflows
  • Output (ANSI-safe):
    • Serialized writers prevent interleaved escape sequences across threads
    • Atomic writes for multi-step output without tearing
    • Markup + ANSI styling (powered by XenoAtom.Ansi)
    • Custom markup tokens via Terminal.MarkupStyles / Terminal.SetMarkupStyle
  • Input (unified events):
    • Single event stream for keys, text, mouse, resize, signals
    • Async + cancellation-friendly APIs for TUI loops
  • Interactive ReadLine editor:
    • Cursor movement, mid-line insert/delete, word navigation/delete
    • Grapheme cluster-aware editing (emoji/ZWJ/combining sequences)
    • Undo/redo + reverse incremental history search
    • Selection by keyboard (Shift) and mouse click/drag
    • History stored on the TerminalReadLineOptions instance (shareable, not global)
    • Completion + extensibility via custom key/mouse handlers (TerminalReadLineController)
    • Clipboard-friendly shortcuts (Ctrl+C/Ctrl+X/Ctrl+V) when available
    • Readable control-char helpers via TerminalChar (e.g. TerminalChar.CtrlC)
    • Gesture formatting/parsing via TerminalKeyGesture (e.g. CTRL+R)
    • Styled prompt (PromptMarkup) + custom line rendering (MarkupRenderer)
  • Scopes + state management:
    • Reliable scopes: alternate screen, raw/cbreak mode, bracketed paste, mouse reporting, hide cursor
    • State tracking: style/colors/decorations, title, cursor position/visibility, window size
  • Clipboard: cross-platform text copy/paste (including OSC 52 for remote shells)
  • CI + testing:
    • CI-aware backend keeps colors when output is redirected
    • In-memory backend for deterministic tests (capture output + inject events)
  • Cross-platform + AOT: Windows Console + Unix (Linux/macOS), net10.0+ and NativeAOT-friendly design

Screenshot of the interactive sample HelloReadLine demo:

Interactive ReadLine Demo

XenoAtom.Terminal is a terminal API, not a widget/UI framework. It provides safe I/O, terminal state/scopes, and input events; higher-level libraries can build screen buffers, widgets, and layouts on top.

๐Ÿ“– User Guide

For more details on how to use XenoAtom.Terminal, please visit the user guide.

๐Ÿงช Sample

  • samples/HelloTerminal prints all input events (key/mouse/resize/text/signal) and demonstrates scopes.
  • samples/HelloReadLine demonstrates the interactive ReadLine editor (history, selection, completion, and markup rendering).
  • samples/LogTerminal prints colored pseudo log lines (timestamp/level/category/message) and is run in CI to validate ANSI output.

๐Ÿชช License

This software is released under the BSD-2-Clause license.

๐Ÿค— Author

Alexandre Mutel aka xoofx.

Product 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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.5.1 35 1/25/2026
1.5.0 46 1/24/2026
1.4.0 37 1/24/2026
1.3.0 99 1/18/2026
1.2.0 99 1/16/2026
1.1.1 104 1/9/2026
1.1.0 99 1/7/2026
1.0.0 102 1/4/2026
1.0.0-preview.4 44 1/4/2026
1.0.0-preview.3 42 1/3/2026
1.0.0-preview.2 42 1/3/2026
1.0.0-preview.1 43 1/2/2026