Hex1b
Assembly: Hex1b.dll
Classes
AlignExtensions
Extension methods for creating .
public static class AlignExtensionsAnimationExtensions
Extension methods for animation and timed redraws.
public static class AnimationExtensionsAsciinemaFileWorkloadAdapter
A workload adapter that plays back an asciinema (.cast) recording file.
public sealed class AsciinemaFileWorkloadAdapter : IHex1bTerminalWorkloadAdapter, IAsyncDisposableAsciinemaMarker
Represents a chapter marker in an asciinema recording.
public sealed record AsciinemaMarker : IEquatable<AsciinemaMarker>AsciinemaRecorder
Records terminal sessions in asciicast v2 format (Asciinema).
public sealed class AsciinemaRecorder : IHex1bTerminalWorkloadFilter, IAsyncDisposable, IDisposableAsciinemaRecorderOptions
Options for configuring the Asciinema recorder.
public sealed class AsciinemaRecorderOptionsAsciinemaRecording
Provides playback control for an asciinema (.cast) recording file.
public sealed class AsciinemaRecordingAsciinemaTheme
Terminal color theme for Asciinema recordings.
public sealed class AsciinemaThemeBackdropExtensions
Extension methods for creating .
public static class BackdropExtensionsBorderExtensions
Extension methods for building BorderWidget.
public static class BorderExtensionsButtonExtensions
Extension methods for creating ButtonWidget.
public static class ButtonExtensionsButtonNode
public sealed class ButtonNode : Hex1bNodeCheckboxExtensions
Extension methods for creating CheckboxWidget.
public static class CheckboxExtensionsCheckboxNode
Render node for CheckboxWidget.
public sealed class CheckboxNode : Hex1bNodeConsolePresentationAdapter
Console presentation adapter using platform-specific raw mode for proper input handling.
public sealed class ConsolePresentationAdapter : IHex1bTerminalPresentationAdapter, IAsyncDisposableDiagnosticShellBuilderExtensions
Extension methods for adding diagnostic shell to .
public static class DiagnosticShellBuilderExtensionsDiagnosticShellWorkloadAdapter
A diagnostic shell workload that simulates a shell environment without PTY infrastructure. Useful for testing terminal control codes and debugging terminal behavior.
public sealed class DiagnosticShellWorkloadAdapter : IHex1bTerminalWorkloadAdapter, IAsyncDisposableDisplayWidth
Provides methods to calculate the terminal display width of Unicode text.
In terminal emulators, most characters occupy 1 cell, but some characters (like CJK ideographs, emojis, and certain other symbols) occupy 2 cells. Combining characters (accents, etc.) occupy 0 cells as they combine with the previous character.
This is based on the Unicode East Asian Width property and wcwidth behavior.
public static class DisplayWidthDrawerExtensions
Extension methods for creating DrawerWidget.
public static class DrawerExtensionsGraphemeHelper
Helper methods for working with grapheme clusters (user-perceived characters).
A grapheme cluster is what users perceive as a single "character" but may be composed of multiple Unicode code points (and thus multiple C# chars).
This class provides methods to navigate text by grapheme cluster boundaries, ensuring operations like delete, cursor movement, and selection work correctly with emojis, combining characters, and other complex Unicode sequences.
public static class GraphemeHelperHeadlessPresentationAdapter
A presentation adapter that discards output and provides no input. Use this for headless/testing scenarios where no actual terminal I/O is needed.
public sealed class HeadlessPresentationAdapter : IHex1bTerminalPresentationAdapter, IAsyncDisposable, IDisposableHex1bApp
The main entry point for building terminal UI applications.
public class Hex1bApp : IDisposable, IAsyncDisposableHex1bAppOptions
Options for configuring a Hex1bApp.
public class Hex1bAppOptionsHex1bAppWorkloadAdapter
Workload adapter for Hex1bApp TUI applications. Bridges the raw byte interface of with the higher-level APIs that Hex1bApp needs.
public sealed class Hex1bAppWorkloadAdapter : IHex1bAppTerminalWorkloadAdapter, IHex1bTerminalWorkloadAdapter, IAsyncDisposable, IDisposableHex1bNode
public abstract class Hex1bNodeHex1bRenderContext
public class Hex1bRenderContextHex1bTerminal
A virtual terminal that bridges workload and presentation layers, with optional screen buffer capture for testing and debugging.
public sealed class Hex1bTerminal : IDisposable, IAsyncDisposableHex1bTerminalBuilder
A builder for creating and configuring instances.
public sealed class Hex1bTerminalBuilderHex1bTerminalChildProcess
Represents a child process attached to a pseudo-terminal (PTY). The process's stdin/stdout/stderr are connected to the PTY, making it believe it's running in an interactive terminal.
public sealed class Hex1bTerminalChildProcess : IHex1bTerminalWorkloadAdapter, IAsyncDisposableHex1bTerminalOptions
Options for configuring a .
public sealed class Hex1bTerminalOptionsHex1bTerminalProcessOptions
Options for configuring a child process workload.
public sealed class Hex1bTerminalProcessOptionsHStackExtensions
Extension methods for building HStack widgets.
public static class HStackExtensionsHStackNode
public sealed class HStackNode : Hex1bNode, ILayoutProviderHyperlinkData
Immutable data containing OSC 8 hyperlink information.
public sealed class HyperlinkDataHyperlinkExtensions
Extension methods for creating and configuring instances using the fluent API.
public static class HyperlinkExtensionsHyperlinkNode
Node that renders a hyperlink using OSC 8 escape sequences. In terminals that support OSC 8, the text becomes clickable.
public sealed class HyperlinkNode : Hex1bNodeIconExtensions
Extension methods for creating IconWidget.
public static class IconExtensionsIconNode
Render node for displaying icons with optional click handling.
public sealed class IconNode : Hex1bNodeInfoBarExtensions
Extension methods for building InfoBar widgets.
public static class InfoBarExtensionsInputBindingExtensions
Extension methods for adding input bindings to widgets.
public static class InputBindingExtensionsLayoutExtensions
Extension methods for building LayoutWidget.
public static class LayoutExtensionsListExtensions
Extension methods for building ListWidget.
public static class ListExtensionsListNode
public sealed class ListNode : Hex1bNodeMenuBarNode
Render node for MenuBarWidget. Horizontal container for top-level menu triggers.
public sealed class MenuBarNode : Hex1bNode, ILayoutProviderMenuExtensions
Extension methods for creating menu widgets.
public static class MenuExtensionsMenuItemNode
Render node for MenuItemWidget. Focusable item that triggers an action when activated.
public sealed class MenuItemNode : Hex1bNodeMenuNode
Render node for MenuWidget. Context-aware rendering: renders as a trigger in MenuBar, or as a submenu item in a parent Menu. When opened, pushes its content to the PopupStack.
public sealed class MenuNode : Hex1bNode, ILayoutProviderMenuPopupNode
Render node for menu popup content. Displays the menu items in a bordered box.
public sealed class MenuPopupNode : Hex1bNode, ILayoutProviderMenuSeparatorNode
Render node for MenuSeparatorWidget. Normally non-focusable visual divider, but can accept focus as a fallback when there are no other focusable items in the menu (to allow navigation out).
public sealed class MenuSeparatorNode : Hex1bNodeNavigatorExtensions
Extension methods for building NavigatorWidget.
[Experimental("HEX1B001")]
public static class NavigatorExtensionsNotification
Represents a notification that can be displayed to the user. Notifications are mutable state objects - modify properties directly and the UI will update.
public sealed class NotificationNotificationAction
Represents an action button on a notification.
public sealed record NotificationAction : IEquatable<NotificationAction>NotificationActionContext
Context passed to notification action button handlers.
public class NotificationActionContext : NotificationEventContextNotificationEventContext
Context passed to notification lifecycle event handlers (dismiss, timeout).
public class NotificationEventContextNotificationIconExtensions
Extension methods for creating notification icon widgets in widget contexts.
public static class NotificationIconExtensionsNotificationPanelExtensions
Extension methods for creating notification panel widgets in widget contexts.
public static class NotificationPanelExtensionsNotificationStack
Manages a collection of notifications with floating/docked state tracking and timeout handling.
public sealed class NotificationStackPickerExtensions
Extension methods for creating Picker widgets.
public static class PickerExtensionsPickerNode
Render node for PickerWidget. Manages the picker's selection state and popup display.
public sealed class PickerNode : CompositeNodePopupEntry
Represents a popup entry with optional anchor information and barrier flag.
public sealed class PopupEntryPopupEntryExtensions
Extension methods for fluent configuration.
public static class PopupEntryExtensionsPopupStack
Manages a stack of popups for menu-like overlay behavior. Each popup has a transparent backdrop - clicking the backdrop pops that layer.
public sealed class PopupStackProgressExtensions
Extension methods for creating Progress widgets.
public static class ProgressExtensionsProgressNode
Render node for displaying progress bars. Created by reconciling a .
public sealed class ProgressNode : Hex1bNodeQrCodeExtensions
Extension methods for creating and configuring instances using the fluent API.
public static class QrCodeExtensionsQrCodeNode
Render node for displaying QR codes in the terminal. Created by reconciling a .
public sealed class QrCodeNode : Hex1bNodeRescueContext
A widget context for building rescue fallback UI. Provides access to error information and the ability to reset the rescue state.
public sealed class RescueContext : WidgetContext<VStackWidget>RescueExtensions
Extension methods for building RescueWidget.
public static class RescueExtensionsResponsiveExtensions
Extension methods for building Responsive widgets. The Responsive widget displays the first child whose condition evaluates to true based on the available space from parent constraints.
public static class ResponsiveExtensionsRootContext
Root context for starting widget tree construction.
public class RootContext : WidgetContext<RootWidget>RootWidget
Marker record for the root context (no parent widget constraint). This widget should never be reconciled - it's purely a type marker.
public sealed record RootWidget : Hex1bWidget, IEquatable<Hex1bWidget>, IEquatable<RootWidget>ScrollExtensions
Extension methods for building ScrollWidget.
public static class ScrollExtensionsSeparatorExtensions
Extension methods for creating instances using the fluent API.
public static class SeparatorExtensionsSixelData
Immutable data containing Sixel graphics information.
public sealed class SixelDataSixelExtensions
Extension methods for creating SixelWidget.
[Experimental("HEX1B_SIXEL", UrlFormat = "https://github.com/hex1b/hex1b/blob/main/docs/experimental/sixel.md")]
public static class SixelExtensionsSizeHintExtensions
Extension methods for setting size hints on widgets. These enable a fluent API: ctx.Text("Hello").Height(SizeHint.Fill)
public static class SizeHintExtensionsSliderExtensions
Extension methods for creating Slider widgets.
public static class SliderExtensionsSliderNode
Render node for the Slider widget. Manages state, handles input, and renders the slider.
public sealed class SliderNode : Hex1bNodeSpinnerExtensions
Extension methods for creating Spinner widgets.
public static class SpinnerExtensionsSpinnerNode
Render node for displaying animated spinners. Created by reconciling a .
public sealed class SpinnerNode : Hex1bNodeSplitButtonExtensions
Extension methods for creating split button widgets in widget contexts.
public static class SplitButtonExtensionsSplitButtonNode
Render node for . Displays a primary action button with an optional dropdown for secondary actions.
public sealed class SplitButtonNode : Hex1bNodeSplitterExtensions
Extension methods for building SplitterWidget.
public static class SplitterExtensionsSplitterNode
public sealed class SplitterNode : Hex1bNode, IChildLayoutProviderStandardProcessWorkloadAdapter
A workload adapter that wraps a standard .NET with redirected I/O.
public sealed class StandardProcessWorkloadAdapter : IHex1bTerminalWorkloadAdapter, IAsyncDisposableStreamWorkloadAdapter
A simple workload adapter that wraps input and output streams. Useful for testing or connecting to arbitrary byte streams.
public sealed class StreamWorkloadAdapter : IHex1bTerminalWorkloadAdapter, IAsyncDisposableSurfaceExtensions
Extension methods for creating instances using the fluent API.
public static class SurfaceExtensionsTableExtensions
Extension methods for creating TableWidget instances.
public static class TableExtensionsTerminalCapabilities
Capabilities that inform how Hex1bTerminal optimizes output and what features are available.
public record TerminalCapabilities : IEquatable<TerminalCapabilities>TerminalExtensions
Extension methods for creating TerminalWidget.
public static class TerminalExtensionsTerminalWidgetHandle
A handle that connects a Hex1bTerminal to a TerminalWidget for embedding child terminal sessions within a TUI application.
public sealed class TerminalWidgetHandle : ICellImpactAwarePresentationAdapter, ITerminalLifecycleAwarePresentationAdapter, IHex1bTerminalPresentationAdapter, IAsyncDisposableTextBlockNode
Render node for displaying text content. Created by reconciling a .
public sealed class TextBlockNode : Hex1bNodeTextBoxExtensions
Extension methods for building TextBoxWidget.
public static class TextBoxExtensionsTextBoxNode
public sealed class TextBoxNode : Hex1bNodeTextExtensions
Extension methods for creating and configuring instances using the fluent API.
public static class TextExtensionsThemePanelExtensions
Extension methods for building ThemePanelWidget.
public static class ThemePanelExtensionsToggleSwitchExtensions
Extension methods for creating ToggleSwitchWidget.
public static class ToggleSwitchExtensionsToggleSwitchNode
A horizontal toggle switch node that renders options side-by-side and allows selection via left/right arrow keys. Selection state is owned by this node and preserved across reconciliation.
public sealed class ToggleSwitchNode : Hex1bNodeTrackedObject<T>
A reference-counted wrapper for objects tracked by terminal cells.
public sealed class TrackedObject<T> where T : classTreeExtensions
Extension methods for creating Tree widgets.
public static class TreeExtensionsTreeItemNode
Render node for a single tree item. Managed by the parent TreeNode which handles tree structure and navigation.
public sealed class TreeItemNode : Hex1bNodeTreeNode
Container node that manages tree layout, scrolling, and guide rendering.
public sealed class TreeNode : Hex1bNodeVStackExtensions
Extension methods for building VStack widgets. The callback returns Hex1bWidget[] using collection expressions. Covariance on Hex1bWidget allows mixing different widget types.
public static class VStackExtensionsVStackNode
public sealed class VStackNode : Hex1bNode, ILayoutProviderWebSocketPresentationAdapter
WebSocket presentation adapter for browser-based terminal connections.
public sealed class WebSocketPresentationAdapter : IHex1bTerminalPresentationAdapter, IAsyncDisposableWidgetContext<TParentWidget>
A context for building widgets within a parent container. The TParentWidget type constrains which child widgets can be created. Extension methods return widgets directly; covariance allows collection expressions.
public class WidgetContext<TParentWidget> where TParentWidget : Hex1bWidgetWorkloadLoggingFilter
A workload filter that logs all data flowing through the workload pipeline to a file.
public sealed class WorkloadLoggingFilter : IHex1bTerminalWorkloadFilter, IAsyncDisposable, IDisposableZStackExtensions
Extension methods for creating .
public static class ZStackExtensionsZStackNode
Render node for . Stacks children on the Z-axis, with later children rendering on top of earlier ones.
public sealed class ZStackNode : Hex1bNode, ILayoutProvider, IPopupHost, INotificationHostStructs
TerminalCell
Represents a single cell in the virtual terminal screen buffer.
public readonly record struct TerminalCell : IEquatable<TerminalCell>Interfaces
ICellImpactAwarePresentationAdapter
Extended presentation adapter interface that receives cell impact information instead of raw ANSI bytes.
public interface ICellImpactAwarePresentationAdapter : IHex1bTerminalPresentationAdapter, IAsyncDisposableIHex1bAppTerminalWorkloadAdapter
App-side interface: Adds the higher-level APIs that Hex1bApp needs. Extends the terminal-side interface so the same adapter serves both.
public interface IHex1bAppTerminalWorkloadAdapter : IHex1bTerminalWorkloadAdapter, IAsyncDisposableIHex1bTerminalPresentationAdapter
Presentation-side interface: Where rendered output goes TO and user input comes FROM. This is the "user side" of the virtual terminal - the actual display device.
public interface IHex1bTerminalPresentationAdapter : IAsyncDisposableIHex1bTerminalPresentationFilter
A filter that observes data flowing between the terminal and presentation layer.
public interface IHex1bTerminalPresentationFilterIHex1bTerminalWorkloadAdapter
Terminal-side interface: What Hex1bTerminal needs from any workload. Raw byte streams for maximum flexibility.
public interface IHex1bTerminalWorkloadAdapter : IAsyncDisposableIHex1bTerminalWorkloadFilter
A filter that observes data flowing between the terminal and workload.
public interface IHex1bTerminalWorkloadFilterINotificationHost
Interface for nodes that can host notifications. Implemented by NotificationPanelNode to allow notification discovery from anywhere in the tree.
public interface INotificationHostIPopupHost
Interface for nodes that can host popup content. Implemented by ZStackNode to allow popup discovery from anywhere in the tree.
public interface IPopupHostITerminalAwarePresentationFilter
Presentation filter that requires a reference to the terminal.
public interface ITerminalAwarePresentationFilter : IHex1bTerminalPresentationFilterITerminalLifecycleAwarePresentationAdapter
Extended presentation adapter interface that receives terminal lifecycle notifications.
public interface ITerminalLifecycleAwarePresentationAdapter : IHex1bTerminalPresentationAdapter, IAsyncDisposableEnums
AsciinemaPlaybackState
Represents the playback state of an asciinema recording.
public enum AsciinemaPlaybackStateCellAttributes
Text styling attributes that can be applied to terminal cells. These correspond to SGR (Select Graphic Rendition) parameters. Multiple attributes can be combined using bitwise OR.
[Flags]
public enum CellAttributes : ushortCursorShape
Specifies the shape of the terminal cursor.
public enum CursorShapeTerminalState
Represents the lifecycle state of a terminal session.
public enum TerminalState