explaingit

arthursonzogni/ftxui

10,120C++Audience · developerComplexity · 3/5Setup · moderate

TLDR

A C++ library for building full-featured interactive apps that run inside a terminal window, with buttons, menus, inputs, animations, and mouse support, no graphical window or external dependencies required.

Mindmap

mindmap
  root((FTXUI))
    Layers
      Pixel and color
      Layout system
      Interactive widgets
    Widgets
      Buttons and menus
      Inputs and sliders
      Checkboxes
    Platforms
      Linux and macOS
      Windows
      WebAssembly
    Install methods
      CMake FetchContent
      vcpkg and Conan
      System packages
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Build a polished interactive CLI tool with menus, progress bars, and real-time dashboards that work over SSH.

USE CASE 2

Add a configuration wizard with checkboxes, sliders, and dropdown menus to an existing command-line application.

USE CASE 3

Compile a terminal app to WebAssembly so it runs in a browser without needing a desktop install.

USE CASE 4

Create a file browser or real-time monitoring dashboard for a server tool that needs to work in environments without a GUI.

Tech stack

C++CMakeWebAssembly

Getting it running

Difficulty · moderate Time to first run · 30min

No external dependencies, add to any C++ project via CMake FetchContent, vcpkg, or Conan and then build normally.

In plain English

FTXUI (Functional Terminal X User Interface) is a C++ library for building interactive interfaces that run entirely inside a terminal window. Instead of opening a graphical window, it draws layouts, buttons, menus, and animations using plain text characters directly in the console. Think of it as a toolkit for making a program look like a full app, but one that works over SSH, in CI logs, or anywhere a regular graphical interface would not. The library is organized into three layers. The lowest layer handles raw pixels and colors in the terminal. On top of that sits a layout system where you arrange boxes, grids, and text elements much like you would arrange blocks on a webpage. The top layer provides interactive widgets such as buttons, checkboxes, input fields, sliders, and dropdown menus, all of which respond to keyboard and mouse input. You compose these pieces together in a style similar to how React components work on the web. FTXUI ships with no external dependencies, so adding it to a project is straightforward. It works on Linux, macOS, Windows, and can even compile to WebAssembly so terminal apps run in a browser. The library supports Unicode and wide characters out of the box, meaning it handles languages that use multi-column glyphs without extra configuration. Animated elements and canvas-based drawing are also supported for projects that need motion or custom graphics. A developer writing a command-line tool can use FTXUI to build a progress bar, a file browser, a configuration menu, or a real-time dashboard without reaching for a web framework or a graphical toolkit. The package is available through CMake FetchContent, vcpkg, Conan, Debian and Ubuntu packages, Arch Linux, and several other package managers, so it fits into most existing C++ build setups. Documentation is available in English, French, Spanish, Chinese, and Japanese, and live examples run directly in the browser.

Copy-paste prompts

Prompt 1
I want to add an interactive terminal menu to my C++ CLI tool using FTXUI. Show me a minimal example with buttons and a layout.
Prompt 2
Help me build a real-time progress dashboard in C++ with FTXUI that updates every second with multiple progress bars.
Prompt 3
I want to create a file browser TUI app using FTXUI. How do I handle keyboard navigation and display a scrollable list?
Prompt 4
Show me how to add FTXUI to my existing CMake project using FetchContent and render a simple checkbox form.
Prompt 5
Help me build an animated spinner and status panel in FTXUI for a long-running background task in my CLI app.
Open on GitHub → Explain another repo

← arthursonzogni on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.