A Go library of ready-made interactive widgets (forms, tables, trees, lists, text areas) for building terminal user interfaces.
ArthurSonzogni/FTXUI
A header-based C++ library for building terminal user interfaces with a functional, component-driven style, with no external dependencies.
- Stars
- 10,829
- Forks
- 628
- Open issues
- 34
- Last commit
- 10 hours ago
What is it?
FTXUI is a C++ library for building terminal user interfaces. It lets developers describe layouts as a tree of elements combined with functions such as hbox, vbox, and gridbox, and it renders them to the terminal. Interactive widgets such as buttons, menus, inputs, sliders, checkboxes, and dropdowns are provided as components that respond to keyboard, mouse, and resize events.
The library is organized into three modules: screen for low-level rendering of colors and characters, dom for layout and styling, and component for user interaction and the main event loop. It supports UTF-8 and fullwidth characters, colors, text decorations, canvas drawing with braille or block characters, and animations. It has no dependencies and can be consumed through CMake FetchContent, Bazel, Meson, vcpkg, Conan, or as an amalgamated single-header build, and it supports C++20 modules. Cross-platform targets include Linux and macOS, WebAssembly, and Windows.
Key features
- 01Functional, component-based API for composing layouts and interactive widgets
- 02Keyboard and mouse navigation with built-in widgets such as menus, inputs, and sliders
- 03Flexible layout with hbox, vbox, gridbox, and flexbox
- 04Canvas drawing using braille, block, or simple characters
- 05UTF-8 and fullwidth character support, with no external dependencies
Use cases
- Building interactive command-line tools with menus, forms, or dashboards
- Writing terminal games or animated text-mode visualizations
- Creating system monitors or log viewers that adapt to terminal size
Quick start
- 1
Add FTXUI to your C++ project with CMake FetchContent, the preferred method in the README
- 2
Include the header <ftxui/ftxui.hpp> and link the CMake target ftxui::ftxui
Things to know
- Linux and macOS are the main targets; Windows support comes from contributors.
Topics
FAQ
- What is FTXUI?
- A header-based C++ library for building terminal user interfaces with a functional, component-driven style, with no external dependencies. FTXUI is a C++ library for building terminal user interfaces. It lets developers describe layouts as a tree of elements combined with functions such as hbox, vbox, and gridbox, and it renders them to the terminal. Interactive widgets such as buttons, menus, inputs, sliders, checkboxes, and dropdowns are provided as components that respond to keyboard, mouse, and resize events.
- Is FTXUI free to use? What license does it have?
- FTXUI is open source under the MIT license. Check the license terms before using it in commercial products.
- Is FTXUI still maintained?
- Actively maintained. The last commit to FTXUI was on Oct 21, 2026.
- What can I use FTXUI for?
- Building interactive command-line tools with menus, forms, or dashboards Writing terminal games or animated text-mode visualizations Creating system monitors or log viewers that adapt to terminal size
- How do I install FTXUI?
- Add FTXUI to your C++ project with CMake FetchContent, the preferred method in the README Include the header <ftxui/ftxui.hpp> and link the CMake target ftxui::ftxui
- Where can I get FTXUI?
- The source code and installation instructions are on GitHub: https://github.com/ArthurSonzogni/FTXUI
Summary generated by AI from the project's README. GitHub stats refresh daily.
Related projects
A Rust crate for building terminal user interfaces (TUIs) with reusable widgets and a simple rendering model.
A Python framework for building terminal and web user interfaces with a simple, component-based API.
A terminal screensaver written in Go that starts when your shell is idle, showing animated scenes like constellations, rain, and particles.
A terminal weather app written in Rust that shows real-time conditions as ASCII animations like rain, snow and thunderstorms.
A cross-platform Go library for building customizable, resizable dashboards and interactive widgets in the terminal.