MCPcopy Create free account
hub / github.com/ArthurSonzogni/FTXUI

github.com/ArthurSonzogni/FTXUI @v7.0.0

Chat with this repo
repository ↗ · DeepWiki ↗ · release v7.0.0 ↗ · + Follow
1,397 symbols 4,072 edges 276 files 417 documented · 30% updated 2d agov7.0.0 · 2026-06-13★ 10,40898 open issues

Browse by type

Functions 1,183 Types & classes 214
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Demo image

latest packaged version(s)

Documentation · Report a Bug · Examples . Request Feature · Send a Pull Request

Doc: English | Français | Español | 繁體中文 | 简体中文 | 日本語 |

FTXUI

Functional Terminal (X) User interface

A simple cross-platform C++ library for terminal based user interfaces!

Feature

Documentation

Example

#include <ftxui/ftxui.hpp>
using namespace ftxui;

int main() {
  auto document =
    vbox({
      hbox({
        text("one") | border,
        text("two") | border | flex,
        text("three") | border | flex,
      }),

      gauge(0.25) | color(Color::Red),
      gauge(0.50) | color(Color::White),
      gauge(0.75) | color(Color::Blue),
    });

  auto screen = Screen::Create(Dimension::Full());
  Render(screen, document);
  screen.Print();

  return 0;
}

image

Short gallery

FTXUI is organized into three modules: 1. screen: Low-level rendering (colors, pixels, terminal) 2. dom: Layout and composition (hierarchical elements) 3. component: User interaction (widgets, events, main loop)

For most users, including everything at once is the simplest way to start: - Header: #include <ftxui/ftxui.hpp> - CMake target: ftxui::ftxui - Bazel target: @ftxui//:ftxui

DOM

This module defines a hierarchical set of Element. An Element manages layout and can be responsive to the terminal dimensions.

They are declared in <ftxui/dom/elements.hpp>

Layout

Element can be arranged together: - horizontally with hbox - vertically with vbox - inside a grid with gridbox - wrap along one direction using the flexbox.

Element can become flexible using the flex decorator.

Example using hbox, vbox and filler.

image

Example using gridbox:

image

Example using flexbox:

image

See also this demo.

Style

An element can be decorated using the functions: - bold - italic - dim - inverted - underlined - underlinedDouble - blink - strikethrough - color - bgcolor - hyperlink

Example

image

FTXUI supports the pipe operator. It means: decorator1(decorator2(element)) and element | decorator1 | decorator2 can be used.

Colors

FTXUI supports every color palette:

Color gallery: image

Border and separator

Use decorator border and element separator() to subdivide your UI:

Element document = vbox({
    text("top"),
    separator(),
    text("bottom"),
}) | border;

Demo:

image

Text and paragraph

A simple piece of text is represented using text("content").

To support text wrapping following spaces the following functions are provided:

Element paragraph(string text);
Element paragraphAlignLeft(string text);
Element paragraphAlignRight(string text);
Element paragraphAlignCenter(string text);
Element paragraphAlignJustify(string text);

Paragraph example

ezgif com-gif-maker (4)

Table

A class to easily style a table of data.

Example:

image

Canvas

Drawing can be made on a Canvas, using braille, block, or simple characters:

Simple example:

image

Complex examples:

ezgif com-gif-maker (3)

Component

ftxui/component produces dynamic UI, reactive to the user's input. It defines a set of ftxui::Component. A component reacts to Events (keyboard, mouse, resize, ...) and Renders as an Element (see previous section).

Prebuilt components are declared in <ftxui/component/component.hpp>

Gallery

Gallery of multiple components. (demo)

image

Radiobox

Example:

image

Checkbox

Example:

image

Input

Example:

image

Toggle

Example:

image

Slider

Example:

image

Menu

Example:

image

ResizableSplit

Example:

ezgif com-gif-maker

Dropdown

Example:

youtube-video-gif (3)

Tab

Vertical:

ezgif com-gif-maker (1)

Horizontal:

ezgif com-gif-maker (2)

Libraries for FTXUI

Core symbols most depended-on inside this repo

Shape

Method 617
Function 566
Class 190
Enum 24

Languages

C++96%
Python3%
TypeScript1%

Modules by API surface

src/ftxui/component/app.cpp80 symbols
src/ftxui/component/menu.cpp38 symbols
src/ftxui/dom/table.cpp35 symbols
src/ftxui/component/component.cpp34 symbols
src/ftxui/component/animation.cpp33 symbols
src/ftxui/dom/canvas.cpp32 symbols
src/ftxui/component/container.cpp31 symbols
src/ftxui/screen/terminal.cpp30 symbols
src/ftxui/component/input.cpp28 symbols
src/ftxui/screen/screen.cpp27 symbols
src/ftxui/dom/separator.cpp25 symbols
src/ftxui/dom/flex.cpp24 symbols

For agents

$ claude mcp add FTXUI \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page