跳到正文
发现
FTXUI:C++ 终端界面库
other开发者工具

FTXUI:C++ 终端界面库

一个简单、跨平台的 C++ 终端用户界面库,用函数式风格帮助开发者构建 TUI。

admin
发布于 2026-10-28
浏览
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 分为三个模块:

  1. screen:底层渲染(颜色、像素、终端)。
  2. dom:布局与组合(层级元素)。
  3. 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 整理,以原仓库为准。

更新记录

  1. v7.0.3当前版本

    修复非备用屏幕模式下鼠标位置不正确的问题:光标位置请求可能异步发送,导致终端回复被误读为错误偏移;该问题由 7.0.2 的节流修复引入。

评论