Terminal.Gui Lexicon & Taxonomy
Arrangement
Term | Meaning |
---|---|
Arrange Mode | Interactive mode activated via Ctrl+F5 that displays indicators on arrangeable views and allows keyboard-based arrangement. |
Arrangement | The feature of Layout which controls how the user can use the mouse and keyboard to arrange views and enables either Tiled or Overlapped layouts. |
Modal | A view run as an "application" via @Terminal.Gui.App.Application.Run where Modal == true . Has constrained z-order with modal view at z-order 1. |
Movable | A View that can be moved by the user using keyboard or mouse. Enabled by setting Movable flag. |
Overlapped | Layout where SubViews have overlapping Frames with Z-order determining visual stacking. Enabled by Overlapped flag. |
Resizable | A View that can be resized by the user using keyboard or mouse. Enabled by setting Resizable flag. |
Runnable | A view where Application.Run(Toplevel) is called. Each non-modal Runnable view has its own RunState and operates as a self-contained application. |
Tiled | Layout where SubViews typically do not overlap, with no z-order. Default layout mode set to Fixed. |
Configuration
Term | Meaning |
---|---|
AppSettings | Application-specific settings stored in the application's resources. |
Apply | Apply the configuration to the application; copies settings from configuration properties to corresponding static [ConfigProperty] properties. |
ConfigProperty | A property decorated with [ConfigProperty] that can be configured via the configuration system. |
Configuration | A collection of settings defining application behavior and appearance. |
ConfigurationManager | System that loads and manages application runtime settings from external sources. |
Load | Load configuration from given location(s), updating with new values. Loading doesn't apply settings automatically. |
Location | Storage location for configuration (e.g., user's home directory, application directory). |
Reset | Reset configuration to current values or hard-coded defaults. Does not load configuration. |
Scope | Defines the context where configuration applies (Settings, Theme, or AppSettings). |
Settings | Runtime options including both system settings and application-specific settings. |
Sources | Set of locations where configuration can be stored (ConfigLocations enum). |
Theme | Named instance containing specific appearance settings. |
ThemeInheritance | Mechanism where themes can inherit and override settings from other themes. |
Themes | Collection of named Theme definitions bundling visual and layout settings. |
Drawing
Term | Meaning |
---|---|
Attribute | Defines concrete visual styling for a visual element (Foreground color, Background color, TextStyle). |
BackgroundColor | A property of Attribute describing the background text color. |
Color | Base terminal color (supports TrueColor and named values like White, Black, Cyan, etc.). |
ForegroundColor | A property of Attribute describing the foreground text color. |
Glyph | A graphical representation of a character. |
Rune | Unicode character. |
Scheme | Maps VisualRole to Attribute , defining visual element appearance (color and style) based on semantic purpose. |
Style | Property of Attribute for font-like hints (bold, italic, underline). |
VisualRole | Semantic role/purpose of a visual element (Normal, Focus, HotFocus, Active, Disabled, ReadOnly). |
Events
Term | Meaning |
---|---|
Action | A delegate type that represents a method that can be called with specific parameters but returns no value. Used for simple callbacks in Terminal.Gui. |
Cancel/Cancelling/Cancelled | Applies to scenarios where something can be cancelled. Changing the Orientation of a Slider is cancelable. |
Cancellation | Mechanisms to halt a phase or workflow in the Cancellable Work Pattern, such as setting Cancel /Handled properties in event arguments or returning bool from virtual methods. |
Command | A pattern that encapsulates a request as an object, allowing for parameterization and queuing of requests. See Command Deep Dive. |
Context | Data passed to observers for informed decision-making in the Cancellable Work Pattern, such as DrawContext (drawing), Key (keyboard), ICommandContext (commands), or CancelEventArgs<Orientation> (orientation). |
Default Behavior | A standard implementation for each phase in the Cancellable Work Pattern, such as DrawText (drawing), InvokeCommands (keyboard and application-level), RaiseActivating (commands), or updating a property (OrientationHelper ). |
Event | A notification mechanism that allows objects to communicate when something of interest occurs. Terminal.Gui uses events extensively for UI interactions. |
Handle/Handling/Handled | Applies to scenarios where an event can either be handled by an event listener (or override) vs not handled. Events that originate from a user action like mouse moves and key presses are examples. |
Invoke | The act of calling or triggering an event, action, or method. |
Listen | The act of subscribing to or registering for an event to receive notifications when it occurs. |
Notifications | Events (e.g., DrawingText , KeyDown , Activating , OrientationChanging ) and virtual methods (e.g., OnDrawingText , OnKeyDown , OnActivating , OnOrientationChanging ) raised at each phase to notify observers in the Cancellable Work Pattern. |
Raise | The act of triggering an event, notifying all registered event handlers that the event has occurred. |
Workflow | A sequence of phases in the Cancellable Work Pattern, which may be multi-phase (e.g., rendering in View.Draw ), linear (e.g., key processing in View.Keyboard ), per-unit (e.g., command execution in View.Command ), or event-driven (e.g., key handling in Application.Keyboard , property changes in OrientationHelper ). |
Layout
Term | Meaning |
---|---|
Adornment | The Thickness es that separate the Frame from the Viewport . There are three Adornments: Margin , Padding , and Border . Adornments are not part of the View's content and are not clipped by the View's ClipArea . |
Application-Relative | The dimensions and characteristics of the application. Because only full-screen apps are currently supported, Application is effectively the same as Screen from a layout perspective. Application-Relative currently means an origin (0, 0 ) at the top-left corner of the terminal. Top is a View with a top-left corner fixed at the Application.Relative coordinate of (0, 0 ) and is the size of Screen . |
Border | The Adornment that resides in the inside of the Margin . The Border is where a visual border (drawn using line-drawing glyphs) and the Title are drawn, and where the user can interact with the mouse/keyboard to adjust the Views' Arrangement. |
Content Area | Describes the View's total content. The location of the content is always (0, 0) and the size is set by SetContentSize and defaults to the size of the Viewport . If the content size is larger than the Viewport , scrolling is enabled. |
Content-Relative | A rectangle, with an origin of (0, 0 ) and size, defined by GetContentSize, where the View's content exists. Content-Relative means a coordinate is relative to the top-left corner of the content, which is always (0,0 ). ContentToScreen and ScreenToContent are helper methods for translating coordinates. |
Frame | A Rectangle that defines the location and size of the View. The coordinates are relative to the SuperView of the View (or, in the case of Application.Top , the console size). Controlled by X, Y, Width, and Height. |
Frame-Relative | The Frame property of a View is a rectangle that describes the current location and size of the view relative to the Superview 's content area. Frame-Relative means a coordinate is relative to the top-left corner of the View in question. FrameToScreen and ScreenToFrame are helper methods for translating coordinates. |
Margin | The outermost Adornment . The outside of the margin is a rectangle the same size as the Frame . By default Margin is {0,0,0,0} . When made thicker, Margins are visually transparent and transparent to mouse events by default. |
Overlapped/Overlapping | Refers to a form Layout where SubViews of a View are visually arranged such that their Frames overlap. In Overlap view arrangements there is a Z-axis (Z-order) in addition to the X and Y dimension. |
Padding | The Adornment resides in the inside of the Border and outside of the Viewport . Padding is {0, 0, 0, 0} by default. Padding is not part of the View's content and is not clipped by the View's Clip . When enabled, scroll bars reside within Padding . |
Screen-Relative | Describes the dimensions and characteristics of the underlying terminal. Currently Terminal.Gui only supports applications that run "full-screen", meaning they fill the entire terminal when running. Screen-Relative means an origin (0, 0 ) at the top-left corner of the terminal. ConsoleDriver implementations operate exclusively on Screen-Relative coordinates. |
Thickness | A smart record struct describing a rectangle where each of the four sides can have a width. Valid width values are >= 0. The inner area of a Thickness is the sum of the widths of the four sides minus the size of the rectangle. |
Tiled/Tiling | Refer to a form of Views that are visually arranged such that they abut each other and do not overlap. In a Tiled view arrangement, Z-ordering only comes into play when a developer intentionally causes views to be aligned such that they overlap. |
Viewport | The Rectangle that describes the portion of the View's Content Area that is currently visible to the user. If size of the Content Area is larger than the Viewport , scrolling is enabled and the Viewport location determines which portion of the content is visible. |
Viewport-Relative | A Content-Relative rectangle representing the subset of the View's content that is visible to the user: Viewport. Viewport-Relative means a coordinate that is bound by (0,0 ) and the size of the inner-rectangle of the View's Padding . The View drawing primitives (e.g. View.Move ) take Viewport-Relative coordinates. |
Navigation
Term | Meaning |
---|---|
Cursor | A visual indicator to the user where keyboard input will have an impact. There is one Cursor per terminal session. See Cursor for a deep-dive. |
Enter / Gain | Means a View that previously was not focused is now becoming focused. "The View is entering focus" is the same as "The View is gaining focus". These terms are legacy terms from v1. |
Focus | The state where a particular UI element (View ) is actively selected and ready to receive user input. When an element has focus, it typically responds to keyboard events and other interactions. |
Focus Chain | The ordered sequence of UI elements that can receive focus, starting from the currently focused element and extending to its parent (SuperView) elements up to the root of the focus tree (Application.Top ). Only one focus chain in an application can have focus (top.HasFocus == true ), and there is one, and only one, View in a focus chain that is the most-focused; the one receiving keyboard input. |
Focus Ordering | The order focusable Views are navigated. Focus Ordering is typically used in UI frameworks to enable screen readers and improve the Accessibility of an application. In v1, TabIndex /TabIndexes enabled Focus Ordering. |
Leave / Lose | Means a View that previously was focused is now becoming un-focused. "The View is leaving focus" is the same as "The View is losing focus". These terms are legacy terms from v1. |
Navigation | The user experience for moving focus between views in the application view-hierarchy. |
Tab | Describes the Tab key found on all keyboards, a break in text that is wider than a space, or a UI element that is a stop-point for keyboard navigation. The use of the word "Tab" for this comes from the typewriter, and is reinforced by the existence of a Tab key on all keyboards. |
TabGroup | A View that is a container for other focusable views. The Application.NextTabGroupKey and Application.PrevTabGroupKey are Key.PageDown.WithCtrl and Key.PageUp.WithCtrl respectively. These keys enable the user to use the keyboard to navigate up and down the view-hierarchy. |
TabStop | A View that is an ultimate stop-point for keyboard navigation. In this usage, ultimate means the View has no focusable subviews. The Application.NextTabStopKey and Application.PrevTabStopKey are Key.Tab and Key.Tab.WithShift respectively. These keys navigate only between peer-views. |
Scrolling
Term | Meaning |
---|---|
Content Area | The total area of content that can be scrolled, defined by GetContentSize(). When larger than the Viewport, scrolling is enabled. |
Scroll | The act of causing content to move either horizontally or vertically within the Viewport. Also referred to as "Content Scrolling". |
ScrollBar | Indicates the size of scrollable content and controls the position of the visible content, either vertically or horizontally. At each end, a Button is provided, one to scroll up or left and one to scroll down or right. Between the buttons is a ScrollSlider that can be dragged to control the position of the visible content. The ScrollSlider is sized to show the proportion of the scrollable content to the size of the Viewport. |
ScrollSlider | A visual indicator that shows the proportion of the scrollable content to the size of the Viewport and allows the user to use the mouse to scroll. |
Viewport | The scrollable "viewport" into the View's Content Area (which is defined by the return value of @Terminal.Gui.ViewBase.View.GetContentSize). See Layout Deep Dive for more details. |
ViewportSettings | Configuration flags that adjust the behavior of scrolling, including whether negative coordinates are allowed and how clipping is applied. |