# arthursonzogni/ftxui

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/arthursonzogni-ftxui).**

9,686 stars · 552 forks · C++ · mit

## Links

- GitHub: https://github.com/ArthurSonzogni/FTXUI
- Homepage: https://arthursonzogni.github.io/FTXUI/
- awesome-repositories: https://awesome-repositories.com/repository/arthursonzogni-ftxui.md

## Topics

`arthursonzogni` `ascii` `ascii-art` `cpp` `curse` `simple` `terminal` `terminal-based` `tui` `ui` `user-interface` `xterm`

## Description

FTXUI is a C++ terminal user interface library and cross-platform console framework used for building interactive command line applications. It functions as a declarative terminal layout engine and a component-based UI toolkit that enables the creation of responsive interfaces.

The library is distinguished by its terminal graphics and animation capabilities, allowing for the rendering of custom shapes, data plots, and smooth visual transitions using easing functions. It provides a comprehensive set of interactive widgets and a layout system utilizing flexbox and grid containers that adapt to terminal window sizes.

The framework covers a broad surface of capabilities including keyboard and mouse input handling, Unicode and UTF-8 text support, and advanced styling options for colors and borders. It also includes data display elements such as tables and graphs, as well as navigation components like tabs and resizable split screens.

Integration is supported via a single-header distribution or through C++20 modules to organize code and reduce compilation times.

## Tags

### User Interface & Experience

- [Terminal Layout Engines](https://awesome-repositories.com/f/user-interface-experience/terminal-layout-engines.md) — Provides a declarative layout engine for composing responsive terminal interfaces using flexbox and grid systems.
- [Terminal User Interfaces](https://awesome-repositories.com/f/user-interface-experience/terminal-user-interfaces.md) — Provides a comprehensive framework for building, styling, and managing interactive text-based user interfaces.
- [C++ Terminal UI Libraries](https://awesome-repositories.com/f/user-interface-experience/c-terminal-ui-libraries.md) — Provides a C++ library for building interactive command line interfaces using a component-based model.
- [Character-Based Visual Elements](https://awesome-repositories.com/f/user-interface-experience/character-based-visual-elements.md) — Provides capabilities to render graphical elements like braille and block characters for terminal-based imagery. ([source](https://cdn.jsdelivr.net/gh/arthursonzogni/ftxui@main/README.md))
- [Character Encoding Support](https://awesome-repositories.com/f/user-interface-experience/character-encoding-support.md) — Provides native support for rendering UTF-8 encoded strings and international character sets. ([source](https://arthursonzogni.github.io/FTXUI/zh-TW/index.html))
- [Character Encoding Support](https://awesome-repositories.com/f/user-interface-experience/character-encoding-support/unicode-version-providers/character-encoding-support.md) — Ensures correct display of UTF-8 and full-width characters across different terminal emulators. ([source](https://arthursonzogni.github.io/FTXUI/es/index.html))
- [Cross-Platform TUI Frameworks](https://awesome-repositories.com/f/user-interface-experience/cross-platform-tui-frameworks.md) — Enables the creation of interactive cross-platform applications using a component-based document object model. ([source](https://arthursonzogni.github.io/FTXUI/examples_2component_2input_8cpp-example.html))
- [Cross-Platform TUI Input Handling](https://awesome-repositories.com/f/user-interface-experience/cross-platform-tui-input-handling.md) — Handles keyboard and mouse interactions through standardized widgets across different operating systems.
- [Flexbox Layouts](https://awesome-repositories.com/f/user-interface-experience/flexbox-layouts.md) — Implements a flexbox-based layout system for arranging elements in responsive rows and columns. ([source](https://arthursonzogni.github.io/FTXUI/namespaceftxui.html))
- [Responsive TUI Layouts](https://awesome-repositories.com/f/user-interface-experience/flexbox-layouts/responsive-tui-layouts.md) — Creates responsive screen structures with grids and flexboxes that adapt to terminal window size changes.
- [Grid Layout Engines](https://awesome-repositories.com/f/user-interface-experience/grid-layout-engines.md) — Provides a grid layout engine for organizing terminal UI components into two-dimensional rows and columns with precise alignment. ([source](https://arthursonzogni.github.io/FTXUI/examples_2dom_2gridbox_8cpp-example.html))
- [Horizontal Arrangements](https://awesome-repositories.com/f/user-interface-experience/horizontal-arrangements.md) — Implements layout containers that align interface elements side-by-side in a single horizontal row. ([source](https://arthursonzogni.github.io/FTXUI/namespaceftxui.html))
- [Layout Containers](https://awesome-repositories.com/f/user-interface-experience/layout-containers.md) — Provides flexible layout containers for structuring and organizing terminal page content in rows or columns. ([source](https://arthursonzogni.github.io/FTXUI/elements_8hpp.html))
- [Responsive Layout Adapters](https://awesome-repositories.com/f/user-interface-experience/responsive-layout-adapters.md) — Ships components that automatically adjust UI dimensions based on changes to the terminal window size. ([source](https://arthursonzogni.github.io/FTXUI/getting-started.html))
- [Text Rendering](https://awesome-repositories.com/f/user-interface-experience/styling-theming-systems/typography-and-iconography/text-rendering.md) — Renders and formats text strings within the terminal interface with custom styling. ([source](https://arthursonzogni.github.io/FTXUI/elements_8hpp_source.html))
- [Terminal Input Handling](https://awesome-repositories.com/f/user-interface-experience/terminal-input-handling.md) — Captures keyboard presses and mouse movements to navigate and interact with terminal interface elements. ([source](https://arthursonzogni.github.io/FTXUI/es/index.html))
- [User Input Processing](https://awesome-repositories.com/f/user-interface-experience/user-input-processing.md) — Provides systems for capturing and interpreting keyboard and mouse events to drive interactive interfaces. ([source](https://arthursonzogni.github.io/FTXUI/))
- [User Interaction Handling](https://awesome-repositories.com/f/user-interface-experience/user-interaction-handling.md) — FtX handles keyboard and mouse events through interactive widgets like checkboxes, sliders, and menus. ([source](https://cdn.jsdelivr.net/gh/arthursonzogni/ftxui@main/README.md))
- [Animation Easing Functions](https://awesome-repositories.com/f/user-interface-experience/animation-and-motion-systems/configuration-utility-helpers/animation-configuration/animation-easing-functions.md) — Includes mathematical easing functions to create smooth acceleration and deceleration in visual transitions. ([source](https://arthursonzogni.github.io/FTXUI/animation_8hpp_source.html))
- [Border Utilities](https://awesome-repositories.com/f/user-interface-experience/border-utilities.md) — Provides customizable rounded or dashed visual frames for wrapping UI components. ([source](https://arthursonzogni.github.io/FTXUI/elements_8hpp_source.html))
- [Checkboxes](https://awesome-repositories.com/f/user-interface-experience/checkboxes.md) — Provides toggleable checkbox input elements for selecting multiple options in a terminal interface. ([source](https://arthursonzogni.github.io/FTXUI/examples_2component_2checkbox_8cpp-example.html))
- [Collapsible UI Components](https://awesome-repositories.com/f/user-interface-experience/collapsible-ui-components.md) — Includes interactive collapsible sections to toggle the visibility of child content blocks. ([source](https://arthursonzogni.github.io/FTXUI/namespaceftxui.html))
- [Foreground and Background Colors](https://awesome-repositories.com/f/user-interface-experience/color-palettes/foreground-and-background-colors.md) — Supports setting foreground and background colors using 16-color, 256-color, or 24-bit palettes. ([source](https://arthursonzogni.github.io/FTXUI/examples_2dom_2color_gallery_8cpp-example.html))
- [TUI Animation Systems](https://awesome-repositories.com/f/user-interface-experience/command-line-interface-design/tui-animation-systems.md) — Implements smooth visual transitions and easing functions for dynamic elements in terminal applications.
- [Interactive UI Elements](https://awesome-repositories.com/f/user-interface-experience/interactive-ui-elements.md) — Implements interactive, clickable buttons that execute defined C++ functions when activated. ([source](https://arthursonzogni.github.io/FTXUI/examples_2component_2button_8cpp_source.html))
- [Dropdown Menus](https://awesome-repositories.com/f/user-interface-experience/navigation-components/dropdown-menus.md) — Provides collapsible dropdown menus that allow users to select a single value from a list. ([source](https://arthursonzogni.github.io/FTXUI/examples_2component_2dropdown_8cpp-example.html))
- [Progress Indicators](https://awesome-repositories.com/f/user-interface-experience/progress-indicators.md) — Renders visual progress bars with configurable directions to indicate task completion levels. ([source](https://arthursonzogni.github.io/FTXUI/elements_8hpp_source.html))
- [Radio Button Groups](https://awesome-repositories.com/f/user-interface-experience/radio-button-groups.md) — Includes radio button groups for managing mutually exclusive selection options. ([source](https://arthursonzogni.github.io/FTXUI/examples_2component_2radiobox_8cpp-example.html))
- [Resizable Panes](https://awesome-repositories.com/f/user-interface-experience/resizable-panes.md) — Includes components for creating split-pane layouts that users can resize by dragging boundaries. ([source](https://arthursonzogni.github.io/FTXUI/examples_2component_2resizable_split_8cpp-example.html))
- [Scrollable Containers](https://awesome-repositories.com/f/user-interface-experience/scrollable-containers.md) — Provides scrollable containers to manage content that exceeds the visible terminal area. ([source](https://arthursonzogni.github.io/FTXUI/namespaceftxui.html))
- [Slider Components](https://awesome-repositories.com/f/user-interface-experience/slider-components.md) — Provides draggable slider components for selecting values within a defined numerical range. ([source](https://arthursonzogni.github.io/FTXUI/namespaceftxui.html))
- [Tabbed Navigation](https://awesome-repositories.com/f/user-interface-experience/tabbed-navigation.md) — Enables switching between different content views using horizontal or vertical tabbed navigation. ([source](https://arthursonzogni.github.io/FTXUI/examples_2component_2tab_horizontal_8cpp-example.html))
- [Table Components](https://awesome-repositories.com/f/user-interface-experience/table-components.md) — Organizes content into aligned paragraphs and styled data tables for clear display. ([source](https://cdn.jsdelivr.net/gh/arthursonzogni/ftxui@main/README.md))
- [Text Formatting](https://awesome-repositories.com/f/user-interface-experience/text-formatting.md) — Provides automatic paragraph formatting for blocks of text within the terminal. ([source](https://arthursonzogni.github.io/FTXUI/examples_2dom_2paragraph_8cpp-example.html))
- [Text Styling Utilities](https://awesome-repositories.com/f/user-interface-experience/text-styling-utilities.md) — Provides tools for applying bold, italics, and underlining to text elements within the terminal interface. ([source](https://arthursonzogni.github.io/FTXUI/examples_2dom_2style_gallery_8cpp-example.html))

### Development Tools & Productivity

- [Cross-Platform Console Tooling](https://awesome-repositories.com/f/development-tools-productivity/cross-platform-console-tooling.md) — Provides a framework for building terminal applications that behave consistently across different operating systems.

### Graphics & Multimedia

- [Terminal Canvas Drawing](https://awesome-repositories.com/f/graphics-multimedia/coordinate-based-drawing-apis/terminal-canvas-drawing.md) — Offers a drawable buffer using a coordinate system specifically designed for the terminal character grid. ([source](https://arthursonzogni.github.io/FTXUI/elements_8hpp.html))
- [Terminal Graphics Rendering](https://awesome-repositories.com/f/graphics-multimedia/graphics-and-media/terminal-graphics-rendering.md) — Enables the rendering of custom shapes and high-fidelity graphics directly within terminal emulators. ([source](https://arthursonzogni.github.io/FTXUI/zh-TW/index.html))
- [Animations](https://awesome-repositories.com/f/graphics-multimedia/graphics-and-media/terminal-graphics-rendering/animations.md) — Implements custom graphics rendering and smooth visual transitions using easing functions within the terminal.
- [Numerical Data Plotting](https://awesome-repositories.com/f/graphics-multimedia/numerical-data-plotting.md) — Renders visual 2D representations of numerical data and mathematical functions directly in the console. ([source](https://arthursonzogni.github.io/FTXUI/namespaceftxui.html))

### Operating Systems & Systems Programming

- [Terminal Output Management](https://awesome-repositories.com/f/operating-systems-systems-programming/terminal-command-line-environments/terminal-interface-systems/terminal-output-management.md) — Manages the raw character grid and terminal state to control the flow of data displayed on screen. ([source](https://arthursonzogni.github.io/FTXUI/getting-started.html))

### Programming Languages & Runtimes

- [Wide-Character Formatting](https://awesome-repositories.com/f/programming-languages-runtimes/unicode-management/wide-character-formatting.md) — Handles wide-width glyphs and international characters for correct visual alignment in the terminal grid. ([source](https://arthursonzogni.github.io/FTXUI/ja/index.html))

### Artificial Intelligence & ML

- [Terminal Element Styling](https://awesome-repositories.com/f/artificial-intelligence-ml/text-generation-controls/acoustic-style-controls/terminal-element-styling.md) — Enables customization of colors, font styles, and padding for individual UI components in a terminal environment. ([source](https://cdn.jsdelivr.net/gh/arthursonzogni/ftxui@main/README.md))

### Part of an Awesome List

- [Cross Platform Layout Libraries](https://awesome-repositories.com/f/awesome-lists/devtools/cross-platform-layout-libraries.md) — Brings flexbox layout capabilities to the terminal environment for consistent cross-platform interaction. ([source](https://cdn.jsdelivr.net/gh/arthursonzogni/ftxui@main/README.md))
- [Window Frames](https://awesome-repositories.com/f/awesome-lists/devtools/window-management/window-frames.md) — Wraps elements with titles and customizable borders to visually group related content. ([source](https://arthursonzogni.github.io/FTXUI/elements_8hpp.html))
- [TUI Element Transitions](https://awesome-repositories.com/f/awesome-lists/media/animation-transitions/tui-element-transitions.md) — Produces smooth visual transitions and dynamic updates for terminal components to improve user experience. ([source](https://arthursonzogni.github.io/FTXUI/ja/index.html))
- [Command Line Interfaces](https://awesome-repositories.com/f/awesome-lists/devtools/command-line-interfaces.md) — Functional terminal user interface library.
- [TUI Libraries](https://awesome-repositories.com/f/awesome-lists/devtools/tui-libraries.md) — Functional C++ TUI library.
- [Media & Communication](https://awesome-repositories.com/f/awesome-lists/media/media-communication.md) — Functional terminal user interface

### Data & Databases

- [Terminal Tables](https://awesome-repositories.com/f/data-databases/data-table-components/terminal-tables.md) — Displays structured information in a grid format with Unicode borders and responsive resizing. ([source](https://arthursonzogni.github.io/FTXUI/examples_2dom_2table_8cpp-example.html))
