百科.dev
全部条目AI 编程趋势榜开源项目技术资讯提交条目
登录
< 返回工具列表
F

FTXUI

> DevOps
开源

:computer: C++ 功能终端用户界面。 :heart:

10.5K stars0 点赞0 次浏览
访问官网GitHub

工具介绍

:computer: C++ 功能终端用户界面。 :heart:




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 * Functional style. Inspired by [1](https://hackernoon.com/building-reactive-terminal-interfaces-in-c-d392ce34e649?gi=d9fb9ce35901) and [React](https://reactjs.org/) * Simple and elegant syntax (in my opinion) * Keyboard & mouse navigation. * Support for [UTF8](https://en.wikipedia.org/wiki/UTF-8) and [fullwidth chars](https://en.wikipedia.org/wiki/Halfwidth_and_fullwidth_forms) (→ 测试) * Support for animations. [Demo 1](https://arthursonzogni.github.io/FTXUI/examples/?file=component/menu_underline_animated_gallery), [Demo 2](https://arthursonzogni.github.io/FTXUI/examples/?file=component/button_style) * Support for drawing. [Demo](https://arthursonzogni.github.io/FTXUI/examples/?file=component/canvas_animated) * No dependencies. * [C++20 Module support](https://arthursonzogni.github.io/FTXUI/cpp20-modules.html) * **Cross platform**: Linux/MacOS (main target), WebAssembly, Windows (Thanks to contributors!). * Learn by [examples](#documentation), and [tutorials](#documentation) * Multiple packages: - CMake [FetchContent]([https://bewagner.net/programming/2020/05/02/cmake-fetchcontent/](https://cmake.org/cmake/help/latest/module/FetchContent.html)) (preferred) - [Bazel](https://registry.bazel.build/modules/ftxui) - [vcpkg](https://vcpkg.link/ports/ftxui) - [Conan](https://conan.io/center/recipes/ftxui) [Debian package](https://tracker.debian.org/pkg/ftxui) - [Ubuntu package](https://launchpad.net/ubuntu/+source/ftxui) - [Arch Linux](https://aur.archlinux.org/packages/ftxui/) - [OpenSUSE](https://build.opensuse.org/package/show/devel:libraries:c_c++/ftxui) - [XMake](https://xmake.io) repository [package](https://github.com/xmake-io/xmake-repo/blob/dev/packages/f/ftxui/xmake.lua) - [Nix](https://github.com/ArthurSonzogni/FTXUI/blob/main/flake.nix) - [Amalgamated (single-header/source)](https://arthursonzogni.github.io/FTXUI/installation_amalgamated.html) (from 7.0.0) - [conda-forge](https://anaconda.org/channels/conda-forge/packages/ftxui/overview) * Good practices: documentation, tests, fuzzers, performance tests, automated CI, automated packaging, etc... ## Documentation - [Starter CMake](https://github.com/ArthurSonzogni/ftxui-starter) - [Starter Bazel](https://github.com/ArthurSonzogni/ftxui-bazel) - [Documentation](https://arthursonzogni.github.io/FTXUI/) - [Examples (WebAssembly)](https://arthursonzogni.github.io/FTXUI/examples/) - [Build using CMake](https://arthursonzogni.github.io/FTXUI/#build-cmake) - [Build using Bazel](https://arthursonzogni.github.io/FTXUI/#build-bazel) - [Build using Meson](doc/installation_meson.md) ## Example ~~~cpp #include 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; } ~~~ ## 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 ` - 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 [``](https://arthursonzogni.github.io/FTXUI/elements_8hpp_source.html ) 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](https://arthursonzogni.github.io/FTXUI/examples_2dom_2vbox_hbox_8cpp-example.html) using `hbox`, `vbox` and `filler`. [Example](https://arthursonzogni.github.io/FTXUI/examples_2dom_2gridbox_8cpp-example.html) using gridbox: [Example](https://github.com/ArthurSonzogni/FTXUI/blob/master/examples/dom/hflow.cpp) using flexbox: [See](https://arthursonzogni.github.io/FTXUI/examples_2dom_2hflow_8cpp-example.html) also this [demo](https://arthursonzogni.github.io/FTXUI/examples/?file=component/flexbox). Style An element can be decorated using the functions: - `bold` - `italic` - `dim` - `inverted` - `underlined` - `underlinedDouble` - `blink` - `strikethrough` - `color` - `bgcolor` - `hyperlink` [Example](https://arthursonzogni.github.io/FTXUI/examples_2dom_2style_gallery_8cpp-example.html) 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](https://arthursonzogni.github.io/FTXUI/examples_2dom_2color_gallery_8cpp-example.html): Border and separator Use decorator `border` and element `separator()` to subdivide your UI: ```cpp Element document = vbox({ text("top"), separator(), text("bottom"), }) | border; ``` [Demo](https://arthursonzogni.github.io/FTXUI/examples_2dom_2separator_8cpp-example.html): Text and paragraph A simple piece of text is represented using `text("content")`. To support text wrapping following spaces the following functions are provided: ```cpp Element paragraph(string text); Element paragraphAlignLeft(string text); Element paragraphAlignRight(string text); Element paragraphAlignCenter(string text); Element paragraphAlignJustify(string text); ``` [Paragraph example](https://arthursonzogni.github.io/FTXUI/examples_2dom_2paragraph_8cpp-example.html) Table A class to easily style a table of data. [Example](https://arthursonzogni.github.io/FTXUI/examples_2dom_2table_8cpp-example.html): Canvas Drawing can be made on a `Canvas`, using braille, block, or simple characters: Simple [example](https://github.com/ArthurSonzogni/FTXUI/blob/master/examples/dom/canvas.cpp): Complex [examples](https://github.com/ArthurSonzogni/FTXUI/blob/master/examples/component/canvas_animated.cpp): #### Component `ftxui/component` produces dynamic UI, reactive to the user's input. It defines a set of `ftxui::Component`. A component reacts to `Event`s (keyboard, mouse, resize, ...) and `Render`s as an `Element` (see previous section). Prebuilt components are declared in [``](https://arthursonzogni.github.io/FTXUI/component_8hpp_source.html) Gallery [Gallery](https://arthursonzogni.github.io/FTXUI/examples_2component_2gallery_8cpp-example.html) of multiple components. ([demo](https://arthursonzogni.github.io/FTXUI/examples/?file=component/gallery)) Radiobox [Example](https://arthursonzogni.github.io/FTXUI/examples_2component_2radiobox_8cpp-example.html): Checkbox [Example](https://arthursonzogni.github.io/FTXUI/examples_2component_2checkbox_8cpp-example.html): Input [Example](https://arthursonzogni.github.io/FTXUI/examples_2component_2input_8cpp-example.html): Toggle [Example](https://arthursonzogni.github.io/FTXUI/examples_2component_2toggle_8cpp-example.html): Slider [Example](https://arthursonzogni.github.io/FTXUI/examples_2component_2slider_8cpp-example.html): Menu [Example](https://arthursonzogni.github.io/FTXUI/examples_2component_2menu_8cpp-example.html): ResizableSplit [Example](https://arthursonzogni.github.io/FTXUI/examples_2component_2resizable_split_8cpp-example.html): Dropdown [Example](https://arthursonzogni.github.io/FTXUI/examples_2component_2dropdown_8cpp-example.html): Tab [Vertical](https://arthursonzogni.github.io/FTXUI/examples_2component_2tab_vertical_8cpp-example.html): [Horizontal](https://arthursonzogni.github.io/FTXUI/examples_2component_2tab_horizontal_8cpp-example.html): ## Libraries for FTXUI - *Want to share a useful Component for FTXUI? Feel free to add yours here* - [ftxui-grid-container](https://github.com/mingsheng13/grid-container-ftxui) - [ftxui-ip-input](https://github.com/mingsheng13/ip-input-ftxui) - [ftxui-image-view](https://github.com/ljrrjl/ftxui-image-view.git): For Image Display. - [ftxui-image-view-async](https://github.com/orrnithogalum/ftxui-image-view-async.git): Fork of the original, without image reloads and conversions on every frame redraw. - [ftxui-navigation-tree](https://github.com/Appisolato/navigation-tree-ftxui) - [MarkdownFTXUI](https://github.com/zvasilev/MarkdownFTXUI): Markdown Editor/Viewer for the terminal. ## Project using FTXUI Feel free to add your projects here: - [json-tui](https://github.com/ArthurSonzogni/json-tui) - [git-tui](https://github.com/ArthurSonzogni/git-tui) - [rgb-tui](https://github.com/ArthurSonzogni/rgb-tui) - [chrome-log-beautifier](https://github.com/ArthurSonzogni/chrome-log-beautifier) --- - [2048-cpp](https://github.com/Chessom/2048-cpp) - [BestEdrOfTheMarket](https://github.com/Xacone/BestEdrOfTheMarket) - [Captain's log](https://github.com/nikoladucak/caps-log) - [Caravan](https://github.com/r3w0p/caravan) - [CryptoCalculator](https://github.com/brevis/CryptoCalculator) - [FTB - tertminal file browser](https://github.com/Cyxuan0311/FTB) - [FTowerX](https://github.com/MhmRhm/FTowerX) - [Fallout terminal hacking](https://github.com/gshigin/yet-another-fallout-terminal-hacking-game) - [Lazylist](https://github.com/zhuyongqi9/lazylist) - [Memory game](https://github.com/mikolajlubiak/memory) - [nfolens](https://github.com/a4x7/nfolens) - [Path Finder](https://

Issues· 0 开放

查看全部 Issues在 GitHub 打开

暂无开放 Issues,或尚未同步最近议题。

> 标签

C++arthursonzogniasciiascii-artcpp

暂无评论,来聊聊你的看法吧

> 工具信息

发布日期2026年8月1日
最后更新2026年9月17日
分类DevOps
定价开源

> 相关工具

D
Docker
容器化平台,标准化应用交付
G
GitHub Actions
GitHub 原生 CI/CD 工作流
N
Nginx
高性能 Web 服务器与反向代理