发现 
other开发者工具
FTXUI:C++ 终端界面库
一个简单、跨平台的 C++ 终端用户界面库,用函数式风格帮助开发者构建 TUI。
- 浏览
- 4
- 访问
- 0
- 下载
- 0
- 版本
- v7.0.3
该作品还没有经过官方审核。访问演示、下载或复制命令前,请自行确认来源可信。
详细介绍
项目简介
FTXUI(Functional Terminal (X) User interface)是一个简单、跨平台的 C++ 库,用于构建基于终端的用户界面。它采用函数式风格,灵感来自 React,提供简洁的语法,支持键盘与鼠标导航、UTF8 与全角字符、动画和绘制。项目无外部依赖,主要面向 Linux/macOS,同时支持 WebAssembly 和 Windows,适合需要在终端中构建交互式 TUI 的 C++ 开发者。
主要功能
- 函数式风格,语法简洁(作者主观评价)。
- 支持键盘与鼠标导航。
- 支持 UTF8 与全角字符(→ 测试)。
- 支持动画,例如菜单下划线动画和按钮样式。
- 支持在 Canvas 上绘制。
- 无外部依赖。
- 支持 C++20 Module。
- 跨平台:Linux/MacOS(主要目标)、WebAssembly、Windows。
- 提供示例和教程,便于学习。
- 提供多种包管理/集成方式:CMake FetchContent(推荐)、Bazel、vcpkg、Conan、Debian、Ubuntu、Arch Linux、OpenSUSE、XMake、Nix、Amalgamated(单头文件/源文件,从 7.0.0 起)、conda-forge。
- 项目包含文档、测试、模糊测试、性能测试、自动化 CI 与自动化打包等良好实践。
FTXUI 分为三个模块:
- screen:底层渲染(颜色、像素、终端)。
- dom:布局与组合(层级元素)。
- component:用户交互(组件、事件、主循环)。
安装与使用
多数用户可以直接包含全部内容:
- 头文件:
#include <ftxui/ftxui.hpp> - CMake 目标:
ftxui::ftxui - Bazel 目标:
@ftxui//:ftxui
README 给出了以下示例:
#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;
}
更多构建方式(CMake、Bazel、Meson)与示例可在项目文档和示例页面查看。
注意事项
- 主要目标平台为 Linux/MacOS,Windows 由贡献者支持。
- 示例提供 WebAssembly 版本,可直接在浏览器中查看效果。
- 项目采用 MIT 许可证。
本作品整理自 GitHub 开源项目 ArthurSonzogni/FTXUI,原作者 @ArthurSonzogni,许可证 MIT。中文介绍由 AI 根据项目 README 整理,以原仓库为准。
更新记录
- v7.0.3当前版本
修复非备用屏幕模式下鼠标位置不正确的问题:光标位置请求可能异步发送,导致终端回复被误读为错误偏移;该问题由 7.0.2 的节流修复引入。
评论