Terminality is a C++23 terminal UI framework that replaces manual cursor positioning with a proper widget hierarchy. You describe your interface as a tree of controls — containers likeDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/Rikitav/Terminality/llms.txt
Use this file to discover all available pages before exploring further.
Grid and StackPanel, interactive widgets like Button, TextBox, and CheckBox — and Terminality handles sizing, alignment, focus management, and efficient redrawing automatically.
Quickstart
Build your first Terminality app in minutes with a working code example.
Installation
Clone the repo, build with CMake, and link Terminality into your project.
Core Concepts
Understand the widget hierarchy, layout system, events, and rendering pipeline.
API Reference
Complete reference for every class, method, and type in the public API.
How it works
Import the module
Add
import terminality; to your source file. Terminality ships as a C++23 module — no headers to include.Initialize the application
Call
HostApplication::Current().EnterTerminal() to take over the terminal and set up raw input mode.Build your widget tree
Use the
init<T>() factory helper and nested lambdas to compose containers and controls into a widget tree.Key features
Widget hierarchy
Grid, StackPanel, Border, and ScrollViewer containers with full child management.
Automatic layout
Star, Auto, and Cell sizing with margin and alignment — no manual coordinate math.
Lazy rendering
Dirty-rect tracking redraws only the cells that changed, keeping output fast.
Focus management
Automatic tab-order navigation and hotkey registration without mesh maps.
Events and properties
Type-safe
Event<Args...> and reactive Property<T> with automatic invalidation.Built-in dialogs
MessageBox, ContextMenu, and OpenFileDialog overlays out of the box.