XenoAtom/XenoAtom.Terminal
XenoAtom/XenoAtom.Terminal has 51 GitHub stars and 3 forks. GitHot measured 0 stars in 24 hours. Last checked 2026-11-14 19:01 UTC. Last push 2026-11-08.
What you can do
- Console-compatible API surface: Title, cursor, window, ReadKey/ReadLine-style workflows
- Serialized writers prevent interleaved escape sequences across threads
- Atomic writes for multi-step output without tearing
- Markup + ANSI styling (powered by XenoAtom.Ansi)
Measured star growth
- in 24h
- 0
- in 7 days
- Collecting history
- in 15 days
- Collecting history
- in 1 month
- Collecting history
Net star changes over overlapping periods, not daily totals. Missing measurements are left blank. Stars measure attention, not software quality.
About
A modern .NET replacement for System.Console
Developer ToolsREADME.md
OriginalXenoAtom.Terminal


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 - Graphics capability detection via
Terminal.Graphicsand optional image output throughXenoAtom.Terminal.Graphics(Kitty, iTerm2, Sixel), including direct-output fallback text, optional cell reservation, encoded image caching, Sixel RGB332 fast palette mode, and real-time frame source notifications
- Input (unified events):
- Single event stream for keys, text, mouse, resize, signals
- Extended key modifiers through native Windows console input or probed Kitty keyboard protocol (
Terminal.Capabilities.SupportsExtendedKeys/ExtendedKeyProtocol) - 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
TerminalReadLineOptionsinstance (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 plus named clipboard formats (for example PNG images), including OSC 52 text fallback for remote shells
- CI + testing:
- CI-aware backend keeps colors when output is redirected
- In-memory backend for deterministic tests (capture output, inject events or feed raw VT input)
- Standalone
TerminalInstanceinstances and thread-localTerminal.UseInstance(...)scopes isolate parallel tests without replacing the global terminal; an opt-inallowOutOfOrderDisposallets a component end its own scope while nested scopes are active
- Cross-platform + AOT: Windows Console + Unix (Linux/macOS),
net10.0+ and NativeAOT-friendly design - Unix terminfo detection: uses terminfo + environment hints for colors (16/256/truecolor) and related capabilities (alternate screen/cursor visibility)
Screenshot of the interactive sample HelloReadLine demo:

[!NOTE] 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/HelloImagedisplays a small markup header and a sample image with terminal graphics.samples/HelloTerminalprints all input events (key/mouse/resize/text/signal) and demonstrates scopes.samples/HelloReadLinedemonstrates the interactiveReadLineeditor (history, selection, completion, and markup rendering).samples/LogTerminalprints 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.