A simple cross-platform C++ library for building functional-style terminal user interfaces.
FTXUI is a C++ library for building terminal-based user interfaces using a functional programming style. It provides a set of components and layout tools to create interactive, cross-platform terminal applications with features like keyboard/mouse navigation, animations, and drawing capabilities.
C++ developers building terminal applications, command-line tools, or interactive console programs who want a modern, declarative UI framework.
Developers choose FTXUI for its React-inspired functional syntax, zero dependencies, cross-platform support, and comprehensive set of prebuilt UI components, making terminal UI development more accessible and maintainable.
:computer: C++ Functional Terminal User Interface. :heart:
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Inspired by React, FTXUI enables declarative UI composition with clean operators like | for styling, making code more readable and maintainable, as shown in the example snippets.
Includes prebuilt interactive components such as menus, sliders, and dropdowns, demonstrated in the gallery, reducing development time for common terminal UI elements.
Supports Linux, macOS, Windows, and WebAssembly, ensuring applications run on various systems without modification, thanks to contributor efforts.
Self-contained library simplifies integration and avoids dependency conflicts, emphasized in build instructions using CMake FetchContent.
Confined to text-based interfaces with limited graphical capabilities beyond ASCII/braille drawing, making it unsuitable for visually rich applications.
Third-party libraries listed are minimal and user-contributed, indicating a smaller community and fewer resources compared to established frameworks like NCurses.
While multiple package managers are supported, setting up with custom build systems may require additional configuration, as hinted by the preferred use of CMake FetchContent.