[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-93366":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":9,"totalLinesOfCode":9,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":9,"subscribersCount":16,"size":16,"stars1d":16,"stars7d":17,"stars30d":17,"stars90d":16,"forks30d":16,"starsTrendScore":16,"compositeScore":18,"rankGlobal":9,"rankLanguage":9,"license":9,"archived":19,"fork":19,"defaultBranch":20,"hasWiki":19,"hasPages":19,"topics":9,"createdAt":9,"pushedAt":9,"updatedAt":21,"readmeContent":22,"aiSummary":23,"trendingCount":16,"starSnapshotCount":16,"syncStatus":24,"lastSyncTime":25,"discoverSource":26},93366,"FTXUI","ArthurSonzogni\u002FFTXUI","ArthurSonzogni",":computer: C++ Functional Terminal User Interface. :heart:",null,"https:\u002F\u002Fgithub.com\u002FArthurSonzogni\u002FFTXUI","C++",10426,600,89,98,0,5,68.34,false,"main","2026-07-22 04:02:08","\n\u003Cp align=\"center\">\n  \u003Cimg src=\"https:\u002F\u002Fgithub.com\u002FArthurSonzogni\u002FFTXUI\u002Fassets\u002F4759106\u002F6925b6da-0a7e-49d9-883c-c890e1f36007\" alt=\"Demo image\">\u003C\u002Fimg>\n  \u003Cbr\u002F>\n  \u003Ca href=\"#\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fc++-%2300599C.svg?style=flat&logo=c%2B%2B&logoColor=white\">\u003C\u002Fimg>\u003C\u002Fa>\n  \u003Ca href=\"http:\u002F\u002Fopensource.org\u002Flicenses\u002FMIT\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Flicense\u002Farthursonzogni\u002FFTXUI?color=black\">\u003C\u002Fimg>\u003C\u002Fa>\n  \u003Ca href=\"#\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fstars\u002FArthurSonzogni\u002FFTXUI\">\u003C\u002Fimg>\u003C\u002Fa>\n  \u003Ca href=\"#\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fforks\u002FArthurSonzogni\u002FFTXUI\">\u003C\u002Fimg>\u003C\u002Fa>\n  \u003Ca href=\"#\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Frepo-size\u002FArthurSonzogni\u002FFTXUI\">\u003C\u002Fimg>\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FArthurSonzogni\u002FFTXUI\u002Fgraphs\u002Fcontributors\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fcontributors\u002Farthursonzogni\u002FFTXUI?color=blue\">\u003C\u002Fimg>\u003C\u002Fa>\n  \u003Cbr\u002F>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FArthurSonzogni\u002FFTXUI\u002Fissues\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fissues\u002FArthurSonzogni\u002FFTXUI\">\u003C\u002Fimg>\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Frepology.org\u002Fproject\u002Fftxui\u002Fversions\">\u003Cimg src=\"https:\u002F\u002Frepology.org\u002Fbadge\u002Flatest-versions\u002Fftxui.svg\" alt=\"latest packaged version(s)\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fcodecov.io\u002Fgh\u002FArthurSonzogni\u002FFTXUI\">\n    \u003Cimg src=\"https:\u002F\u002Fcodecov.io\u002Fgh\u002FArthurSonzogni\u002FFTXUI\u002Fbranch\u002Fmaster\u002Fgraph\u002Fbadge.svg?token=C41FdRpNVA\"\u002F>\n  \u003C\u002Fa>\n\n  \n  \u003Cbr\u002F>\n  \u003Ca href=\"https:\u002F\u002Farthursonzogni.github.io\u002FFTXUI\u002F\">Documentation\u003C\u002Fa> ·\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FArthurSonzogni\u002FFTXUI\u002Fissues\">Report a Bug\u003C\u002Fa> ·\n  \u003Ca href=\"https:\u002F\u002Farthursonzogni.github.io\u002FFTXUI\u002Fexamples\u002F\">Examples\u003C\u002Fa> .\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FArthurSonzogni\u002FFTXUI\u002Fissues\">Request Feature\u003C\u002Fa> ·\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FArthurSonzogni\u002FFTXUI\u002Fpulls\">Send a Pull Request\u003C\u002Fa>\n  \n  \u003Cbr\u002F>\n  Doc:\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FArthurSonzogni\u002F\">English\u003C\u002Fa> |\n  \u003Ca href=\"https:\u002F\u002Farthursonzogni.github.io\u002FFTXUI\u002Ffr\u002Findex.html\">Français\u003C\u002Fa> |\n  \u003Ca href=\"https:\u002F\u002Farthursonzogni.github.io\u002FFTXUI\u002Fes\u002Findex.html\">Español\u003C\u002Fa> |\n  \u003Ca href=\"https:\u002F\u002Farthursonzogni.github.io\u002FFTXUI\u002Fzh-TW\u002Findex.html\">繁體中文\u003C\u002Fa> |\n  \u003Ca href=\"https:\u002F\u002Farthursonzogni.github.io\u002FFTXUI\u002Fzh-CH\u002Findex.html\">简体中文\u003C\u002Fa> |\n  \u003Ca href=\"https:\u002F\u002Farthursonzogni.github.io\u002FFTXUI\u002Fja\u002Findex.html\">日本語\u003C\u002Fa> |\n\n\u003C\u002Fp>\n\n# FTXUI\n\n\u003Ci>Functional Terminal (X) User interface\u003C\u002Fi>\n\nA simple cross-platform C++ library for terminal based user interfaces!\n\n## Feature\n * Functional style. Inspired by\n   [1](https:\u002F\u002Fhackernoon.com\u002Fbuilding-reactive-terminal-interfaces-in-c-d392ce34e649?gi=d9fb9ce35901)\n   and [React](https:\u002F\u002Freactjs.org\u002F)\n * Simple and elegant syntax (in my opinion)\n * Keyboard & mouse navigation.\n * Support for [UTF8](https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FUTF-8) and [fullwidth chars](https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FHalfwidth_and_fullwidth_forms) (→ 测试)\n * Support for animations. [Demo 1](https:\u002F\u002Farthursonzogni.github.io\u002FFTXUI\u002Fexamples\u002F?file=component\u002Fmenu_underline_animated_gallery), [Demo 2](https:\u002F\u002Farthursonzogni.github.io\u002FFTXUI\u002Fexamples\u002F?file=component\u002Fbutton_style)\n * Support for drawing. [Demo](https:\u002F\u002Farthursonzogni.github.io\u002FFTXUI\u002Fexamples\u002F?file=component\u002Fcanvas_animated)\n * No dependencies.\n * [C++20 Module support](https:\u002F\u002Farthursonzogni.github.io\u002FFTXUI\u002Fcpp20-modules.html)\n * **Cross platform**: Linux\u002FMacOS (main target), WebAssembly, Windows (Thanks to contributors!).\n * Learn by [examples](#documentation), and [tutorials](#documentation)\n * Multiple packages:\n     - CMake [FetchContent]([https:\u002F\u002Fbewagner.net\u002Fprogramming\u002F2020\u002F05\u002F02\u002Fcmake-fetchcontent\u002F](https:\u002F\u002Fcmake.org\u002Fcmake\u002Fhelp\u002Flatest\u002Fmodule\u002FFetchContent.html)) (preferred)\n     - [Bazel](https:\u002F\u002Fregistry.bazel.build\u002Fmodules\u002Fftxui)\n     - [vcpkg](https:\u002F\u002Fvcpkg.link\u002Fports\u002Fftxui)\n     - [Conan](https:\u002F\u002Fconan.io\u002Fcenter\u002Frecipes\u002Fftxui) [Debian package](https:\u002F\u002Ftracker.debian.org\u002Fpkg\u002Fftxui)\n     - [Ubuntu package](https:\u002F\u002Flaunchpad.net\u002Fubuntu\u002F+source\u002Fftxui)\n     - [Arch Linux](https:\u002F\u002Faur.archlinux.org\u002Fpackages\u002Fftxui\u002F)\n    - [OpenSUSE](https:\u002F\u002Fbuild.opensuse.org\u002Fpackage\u002Fshow\u002Fdevel:libraries:c_c++\u002Fftxui)\n    - [XMake](https:\u002F\u002Fxmake.io) repository [package](https:\u002F\u002Fgithub.com\u002Fxmake-io\u002Fxmake-repo\u002Fblob\u002Fdev\u002Fpackages\u002Ff\u002Fftxui\u002Fxmake.lua)\n    - [Nix](https:\u002F\u002Fgithub.com\u002FArthurSonzogni\u002FFTXUI\u002Fblob\u002Fmain\u002Fflake.nix)\n    - [Amalgamated (single-header\u002Fsource)](https:\u002F\u002Farthursonzogni.github.io\u002FFTXUI\u002Finstallation_amalgamated.html) (from 7.0.0)\n    - [conda-forge](https:\u002F\u002Fanaconda.org\u002Fchannels\u002Fconda-forge\u002Fpackages\u002Fftxui\u002Foverview)\n * Good practices: documentation, tests, fuzzers, performance tests, automated CI, automated packaging, etc...\n\n## Documentation\n\n- [Starter CMake](https:\u002F\u002Fgithub.com\u002FArthurSonzogni\u002Fftxui-starter)\n- [Starter Bazel](https:\u002F\u002Fgithub.com\u002FArthurSonzogni\u002Fftxui-bazel)\n- [Documentation](https:\u002F\u002Farthursonzogni.github.io\u002FFTXUI\u002F)\n- [Examples (WebAssembly)](https:\u002F\u002Farthursonzogni.github.io\u002FFTXUI\u002Fexamples\u002F)\n- [Build using CMake](https:\u002F\u002Farthursonzogni.github.io\u002FFTXUI\u002F#build-cmake)\n- [Build using Bazel](https:\u002F\u002Farthursonzogni.github.io\u002FFTXUI\u002F#build-bazel)\n- [Build using Meson](doc\u002Finstallation_meson.md)\n\n## Example\n~~~cpp\n#include \u003Cftxui\u002Fftxui.hpp>\nusing namespace ftxui;\n\nint main() {\n  auto document =\n    vbox({\n      hbox({\n        text(\"one\") | border,\n        text(\"two\") | border | flex,\n        text(\"three\") | border | flex,\n      }),\n\n      gauge(0.25) | color(Color::Red),\n      gauge(0.50) | color(Color::White),\n      gauge(0.75) | color(Color::Blue),\n    });\n\n  auto screen = Screen::Create(Dimension::Full());\n  Render(screen, document);\n  screen.Print();\n\n  return 0;\n}\n~~~\n\n![image](https:\u002F\u002Fgithub.com\u002FArthurSonzogni\u002FFTXUI\u002Fassets\u002F4759106\u002F569bf043-4e85-4245-aad5-2324572135c4)\n\n## Short gallery\n\nFTXUI is organized into three modules:\n1.  **screen**: Low-level rendering (colors, pixels, terminal)\n2.  **dom**: Layout and composition (hierarchical elements)\n3.  **component**: User interaction (widgets, events, main loop)\n\nFor most users, including everything at once is the simplest way to start:\n- Header: `#include \u003Cftxui\u002Fftxui.hpp>`\n- CMake target: `ftxui::ftxui`\n- Bazel target: `@ftxui\u002F\u002F:ftxui`\n\n#### DOM\n\nThis module defines a hierarchical set of `Element`. An `Element` manages layout and can be responsive to the terminal dimensions.\n\nThey are declared in [`\u003Cftxui\u002Fdom\u002Felements.hpp>`](https:\u002F\u002Farthursonzogni.github.io\u002FFTXUI\u002Felements_8hpp_source.html\n)\n  \n\u003Cdetails>\u003Csummary>Layout\u003C\u002Fsummary>\n\n`Element` can be arranged together:\n  - horizontally with `hbox`\n  - vertically with `vbox`\n  - inside a grid with `gridbox`\n  - wrap along one direction using the `flexbox`.\n  \n`Element` can become flexible using the `flex` decorator.\n  \n[Example](https:\u002F\u002Farthursonzogni.github.io\u002FFTXUI\u002Fexamples_2dom_2vbox_hbox_8cpp-example.html) using `hbox`, `vbox` and `filler`.\n\n![image](https:\u002F\u002Fuser-images.githubusercontent.com\u002F4759106\u002F147242524-7103b5d9-1a92-4e2d-ac70-b3d6740061e3.png)\n  \n  \n[Example](https:\u002F\u002Farthursonzogni.github.io\u002FFTXUI\u002Fexamples_2dom_2gridbox_8cpp-example.html) using gridbox:\n\n![image](https:\u002F\u002Fuser-images.githubusercontent.com\u002F4759106\u002F147242972-0db1f2e9-0790-496f-86e6-ed2c604f7a73.png)\n\n[Example](https:\u002F\u002Fgithub.com\u002FArthurSonzogni\u002FFTXUI\u002Fblob\u002Fmaster\u002Fexamples\u002Fdom\u002Fhflow.cpp) using flexbox:\n\n![image](https:\u002F\u002Fuser-images.githubusercontent.com\u002F4759106\u002F147243064-780ac7cc-605b-475f-94b8-cf7c4aed03a5.png)\n\n[See](https:\u002F\u002Farthursonzogni.github.io\u002FFTXUI\u002Fexamples_2dom_2hflow_8cpp-example.html) also this [demo](https:\u002F\u002Farthursonzogni.github.io\u002FFTXUI\u002Fexamples\u002F?file=component\u002Fflexbox).\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\u003Csummary>Style\u003C\u002Fsummary>\n\nAn element can be decorated using the functions:\n  - `bold`\n  - `italic`\n  - `dim`\n  - `inverted`\n  - `underlined`\n  - `underlinedDouble`\n  - `blink`\n  - `strikethrough`\n  - `color`\n  - `bgcolor`\n  - `hyperlink`\n\n[Example](https:\u002F\u002Farthursonzogni.github.io\u002FFTXUI\u002Fexamples_2dom_2style_gallery_8cpp-example.html)\n\n![image](https:\u002F\u002Fuser-images.githubusercontent.com\u002F4759106\u002F147244118-380bf834-9e33-40df-9ff0-07c10f2598ef.png)\n  \nFTXUI supports the pipe operator. It means: `decorator1(decorator2(element))` and `element | decorator1 | decorator2` can be used.\n  \n\u003C\u002Fdetails>\n\n\u003Cdetails>\u003Csummary>Colors\u003C\u002Fsummary>\n\nFTXUI supports every color palette:\n\nColor [gallery](https:\u002F\u002Farthursonzogni.github.io\u002FFTXUI\u002Fexamples_2dom_2color_gallery_8cpp-example.html):\n![image](https:\u002F\u002Fuser-images.githubusercontent.com\u002F4759106\u002F147248595-04c7245a-5b85-4544-809d-a5984fc6f9e7.png)\n\n\u003C\u002Fdetails>\n  \n\u003Cdetails>\u003Csummary>Border and separator\u003C\u002Fsummary>\n\nUse decorator `border` and element `separator()` to subdivide your UI:\n  \n```cpp\nElement document = vbox({\n    text(\"top\"),\n    separator(),\n    text(\"bottom\"),\n}) | border;\n\n```\n\n[Demo](https:\u002F\u002Farthursonzogni.github.io\u002FFTXUI\u002Fexamples_2dom_2separator_8cpp-example.html):\n  \n![image](https:\u002F\u002Fuser-images.githubusercontent.com\u002F4759106\u002F147244514-4135f24b-fb8e-4067-8896-bc53545583f7.png)\n  \n\u003C\u002Fdetails>\n\n\u003Cdetails>\u003Csummary>Text and paragraph\u003C\u002Fsummary>\n\nA simple piece of text is represented using `text(\"content\")`.\n\nTo support text wrapping following spaces the following functions are provided:\n```cpp\nElement paragraph(string text);\nElement paragraphAlignLeft(string text);\nElement paragraphAlignRight(string text);\nElement paragraphAlignCenter(string text);\nElement paragraphAlignJustify(string text);\n```\n  \n[Paragraph example](https:\u002F\u002Farthursonzogni.github.io\u002FFTXUI\u002Fexamples_2dom_2paragraph_8cpp-example.html)\n  \n![ezgif com-gif-maker (4)](https:\u002F\u002Fuser-images.githubusercontent.com\u002F4759106\u002F147251370-983a06e7-6f41-4113-92b8-942f43d34d06.gif)\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\u003Csummary>Table\u003C\u002Fsummary>\n\nA class to easily style a table of data.\n\n[Example](https:\u002F\u002Farthursonzogni.github.io\u002FFTXUI\u002Fexamples_2dom_2table_8cpp-example.html):\n  \n![image](https:\u002F\u002Fuser-images.githubusercontent.com\u002F4759106\u002F147250766-77d8ec9e-cf2b-486d-9866-1fd9f1bd2e6b.png)\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\u003Csummary>Canvas\u003C\u002Fsummary>\n\nDrawing can be made on a `Canvas`, using braille, block, or simple characters:\n  \nSimple [example](https:\u002F\u002Fgithub.com\u002FArthurSonzogni\u002FFTXUI\u002Fblob\u002Fmaster\u002Fexamples\u002Fdom\u002Fcanvas.cpp):\n  \n![image](https:\u002F\u002Fuser-images.githubusercontent.com\u002F4759106\u002F147245843-76cc62fb-ccb4-421b-aacf-939f9afb42fe.png)\n\nComplex [examples](https:\u002F\u002Fgithub.com\u002FArthurSonzogni\u002FFTXUI\u002Fblob\u002Fmaster\u002Fexamples\u002Fcomponent\u002Fcanvas_animated.cpp):\n  \n![ezgif com-gif-maker (3)](https:\u002F\u002Fuser-images.githubusercontent.com\u002F4759106\u002F147250538-783a8246-98e0-4a25-b032-3bd3710549d1.gif)  \n\u003C\u002Fdetails>\n\n#### Component\n\n`ftxui\u002Fcomponent` 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).\n\nPrebuilt components are declared in [`\u003Cftxui\u002Fcomponent\u002Fcomponent.hpp>`](https:\u002F\u002Farthursonzogni.github.io\u002FFTXUI\u002Fcomponent_8hpp_source.html)\n\n\u003Cdetails>\u003Csummary>Gallery\u003C\u002Fsummary>\n\n[Gallery](https:\u002F\u002Farthursonzogni.github.io\u002FFTXUI\u002Fexamples_2component_2gallery_8cpp-example.html) of multiple components. ([demo](https:\u002F\u002Farthursonzogni.github.io\u002FFTXUI\u002Fexamples\u002F?file=component\u002Fgallery))\n\n![image](https:\u002F\u002Fuser-images.githubusercontent.com\u002F4759106\u002F147247330-b60beb9f-e665-48b4-81c0-4b01ee95bc66.png)\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\u003Csummary>Radiobox\u003C\u002Fsummary>\n\n[Example](https:\u002F\u002Farthursonzogni.github.io\u002FFTXUI\u002Fexamples_2component_2radiobox_8cpp-example.html):\n  \n![image](https:\u002F\u002Fuser-images.githubusercontent.com\u002F4759106\u002F147246401-809d14a5-6621-4e36-8dd9-a2d75ef2a94e.png)\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\u003Csummary>Checkbox\u003C\u002Fsummary>\n\n[Example](https:\u002F\u002Farthursonzogni.github.io\u002FFTXUI\u002Fexamples_2component_2checkbox_8cpp-example.html):\n\n![image](https:\u002F\u002Fuser-images.githubusercontent.com\u002F4759106\u002F147246646-b86926a9-1ef9-4efb-af98-48a9b62acd81.png)\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\u003Csummary>Input\u003C\u002Fsummary>\n\n[Example](https:\u002F\u002Farthursonzogni.github.io\u002FFTXUI\u002Fexamples_2component_2input_8cpp-example.html):\n\n![image](https:\u002F\u002Fuser-images.githubusercontent.com\u002F4759106\u002F147247671-f1d6f606-1845-4e94-a4a0-d4273e9ae6bd.png)\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\u003Csummary>Toggle\u003C\u002Fsummary>\n\n[Example](https:\u002F\u002Farthursonzogni.github.io\u002FFTXUI\u002Fexamples_2component_2toggle_8cpp-example.html):\n\n![image](https:\u002F\u002Fuser-images.githubusercontent.com\u002F4759106\u002F147249383-e2201cf1-b7b8-4a5a-916f-d761e3e7ae40.png)\n\n\u003C\u002Fdetails>\n\n\n\u003Cdetails>\u003Csummary>Slider\u003C\u002Fsummary>\n\n[Example](https:\u002F\u002Farthursonzogni.github.io\u002FFTXUI\u002Fexamples_2component_2slider_8cpp-example.html):\n\n![image](https:\u002F\u002Fuser-images.githubusercontent.com\u002F4759106\u002F147249265-7e2cad75-082c-436e-affe-44a550c480ab.png)\n\n\u003C\u002Fdetails>\n\n\n\u003Cdetails>\u003Csummary>Menu\u003C\u002Fsummary>\n\n[Example](https:\u002F\u002Farthursonzogni.github.io\u002FFTXUI\u002Fexamples_2component_2menu_8cpp-example.html):\n\n![image](https:\u002F\u002Fuser-images.githubusercontent.com\u002F4759106\u002F147247822-0035fd6f-bb13-4b3a-b057-77eb9291582f.png)\n\n\u003C\u002Fdetails>\n\n\n\u003Cdetails>\u003Csummary>ResizableSplit\u003C\u002Fsummary>\n\n[Example](https:\u002F\u002Farthursonzogni.github.io\u002FFTXUI\u002Fexamples_2component_2resizable_split_8cpp-example.html):\n\n![ezgif com-gif-maker](https:\u002F\u002Fuser-images.githubusercontent.com\u002F4759106\u002F147248372-c55512fe-9b96-4b08-a1df-d05cf2cae431.gif)  \n\u003C\u002Fdetails>\n\n\n\u003Cdetails>\u003Csummary>Dropdown\u003C\u002Fsummary>\n\n[Example](https:\u002F\u002Farthursonzogni.github.io\u002FFTXUI\u002Fexamples_2component_2dropdown_8cpp-example.html):\n\n![youtube-video-gif (3)](https:\u002F\u002Fuser-images.githubusercontent.com\u002F4759106\u002F147246982-1e821751-531c-4e1f-bc37-2fa290e143cd.gif)\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\u003Csummary>Tab\u003C\u002Fsummary>\n\n[Vertical](https:\u002F\u002Farthursonzogni.github.io\u002FFTXUI\u002Fexamples_2component_2tab_vertical_8cpp-example.html):\n  \n![ezgif com-gif-maker (1)](https:\u002F\u002Fuser-images.githubusercontent.com\u002F4759106\u002F147250144-22ff044a-4773-4ff7-a49c-12ba4034acb4.gif)\n\n[Horizontal](https:\u002F\u002Farthursonzogni.github.io\u002FFTXUI\u002Fexamples_2component_2tab_horizontal_8cpp-example.html):\n  \n  ![ezgif com-gif-maker (2)](https:\u002F\u002Fuser-images.githubusercontent.com\u002F4759106\u002F147250217-fe447e0f-7a99-4e08-948a-995087d9b40e.gif)\n\n  \n\n\u003C\u002Fdetails>\n\n## Libraries for FTXUI\n- *Want to share a useful Component for FTXUI? Feel free to add yours here*\n- [ftxui-grid-container](https:\u002F\u002Fgithub.com\u002Fmingsheng13\u002Fgrid-container-ftxui)\n- [ftxui-ip-input](https:\u002F\u002Fgithub.com\u002Fmingsheng13\u002Fip-input-ftxui)\n- [ftxui-image-view](https:\u002F\u002Fgithub.com\u002Fljrrjl\u002Fftxui-image-view.git): For Image Display.\n- [ftxui-navigation-tree](https:\u002F\u002Fgithub.com\u002FAppisolato\u002Fnavigation-tree-ftxui)\n- [MarkdownFTXUI](https:\u002F\u002Fgithub.com\u002Fzvasilev\u002FMarkdownFTXUI): Markdown Editor\u002FViewer for the terminal.\n\n\n## Project using FTXUI\n\nFeel free to add your projects here:\n- [json-tui](https:\u002F\u002Fgithub.com\u002FArthurSonzogni\u002Fjson-tui)\n- [git-tui](https:\u002F\u002Fgithub.com\u002FArthurSonzogni\u002Fgit-tui)\n- [rgb-tui](https:\u002F\u002Fgithub.com\u002FArthurSonzogni\u002Frgb-tui)\n- [chrome-log-beautifier](https:\u002F\u002Fgithub.com\u002FArthurSonzogni\u002Fchrome-log-beautifier)\n---\n- [2048-cpp](https:\u002F\u002Fgithub.com\u002FChessom\u002F2048-cpp)\n- [BestEdrOfTheMarket](https:\u002F\u002Fgithub.com\u002FXacone\u002FBestEdrOfTheMarket)\n- [Captain's log](https:\u002F\u002Fgithub.com\u002Fnikoladucak\u002Fcaps-log)\n- [Caravan](https:\u002F\u002Fgithub.com\u002Fr3w0p\u002Fcaravan)\n- [CryptoCalculator](https:\u002F\u002Fgithub.com\u002Fbrevis\u002FCryptoCalculator)\n- [FTB - tertminal file browser](https:\u002F\u002Fgithub.com\u002FCyxuan0311\u002FFTB)\n- [FTowerX](https:\u002F\u002Fgithub.com\u002FMhmRhm\u002FFTowerX)\n- [Fallout terminal hacking](https:\u002F\u002Fgithub.com\u002Fgshigin\u002Fyet-another-fallout-terminal-hacking-game)\n- [Lazylist](https:\u002F\u002Fgithub.com\u002Fzhuyongqi9\u002Flazylist)\n- [Memory game](https:\u002F\u002Fgithub.com\u002Fmikolajlubiak\u002Fmemory)\n- [nfolens](https:\u002F\u002Fgithub.com\u002Fa4x7\u002Fnfolens)\n- [Path Finder](https:\u002F\u002Fgithub.com\u002FRuebled\u002FPath_Finder)\n- [Pigeon ROS TUI](https:\u002F\u002Fgithub.com\u002FPigeonSensei\u002FPigeon_ros_tui)\n- [SHOOT!](https:\u002F\u002Fgithub.com\u002FShingZhanho\u002FENGG1340-Project-25Spring)\n- [StartUp](https:\u002F\u002Fgithub.com\u002FStubbornVegeta\u002FStartUp)\n- [Step-Writer](https:\u002F\u002Fgithub.com\u002FBrianAnakPintar\u002Fstep-writer)\n- [TUISIC](https:\u002F\u002Fgithub.com\u002FDark-Kernel\u002Ftuisic)\n- [Terminal Animation](https:\u002F\u002Fgithub.com\u002Fmikolajlubiak\u002Fterminal_animation)\n- [TimeAccumulator](https:\u002F\u002Fgithub.com\u002Fasari555\u002FTimeAccumulator)\n- [UDP chat](https:\u002F\u002Fgithub.com\u002FSergeydigl3\u002Fudp-chat-tui)\n- [VerifySN (Fast Hash Tool)](https:\u002F\u002Fgithub.com\u002Fd06i\u002FverifySN)\n- [XJ music](https:\u002F\u002Fgithub.com\u002Fxjmusic\u002Fxjmusic)\n- [beagle-config](https:\u002F\u002Fgithub.com\u002FSAtacker\u002Fbeagle-config)\n- [cachyos-cli-installer](https:\u002F\u002Fgithub.com\u002Fcachyos\u002Fnew-cli-installer)\n- [eCAL monitor](https:\u002F\u002Fgithub.com\u002Feclipse-ecal\u002Fecal)\n- [ftxuiFileReader](https:\u002F\u002Fgithub.com\u002FJ0sephDavis\u002FftxuiFileReader)\n- [ftxui_CPUMeter](https:\u002F\u002Fgithub.com\u002Ftzzzzzzzx\u002Fftxui_CPUMeter)\n- [hastur](https:\u002F\u002Fgithub.com\u002Frobinlinden\u002Fhastur)\n- [i3-termdialogs](https:\u002F\u002Fgithub.com\u002Fmibli\u002Fi3-termdialogs)\n- [inLimbo](https:\u002F\u002Fgithub.com\u002Fnots1dd\u002FinLimbo)\n- [keywords](https:\u002F\u002Fgithub.com\u002FOakamoore\u002Fkeywords) ([Play web version :heart:](https:\u002F\u002Foakamoore.itch.io\u002Fkeywords))\n- [ltuiny](https:\u002F\u002Fgithub.com\u002Fadrianoviana87\u002Fltuiny)\n- [openJuice](https:\u002F\u002Fgithub.com\u002Fmikomikotaishi\u002FopenJuice)\n- [ostree-tui](https:\u002F\u002Fgithub.com\u002FAP-Sensing\u002Fostree-tui)\n- [OvenbirdBT](https:\u002F\u002Fgithub.com\u002Fziptt\u002FOvenbirdBT)\n- [pciex](https:\u002F\u002Fgithub.com\u002Fs0nx\u002Fpciex)\n- [resource-monitor](https:\u002F\u002Fgithub.com\u002Fcatalincd\u002Fresource-monitor)\n- [rw-tui](https:\u002F\u002Fgithub.com\u002FLeeKyuHyuk\u002Frw-tui)\n- [simpPRU](https:\u002F\u002Fgithub.com\u002FVedantParanjape\u002FsimpPRU)\n- [sweeper](https:\u002F\u002Fwww.thomthom.net\u002Fthoughts\u002F2026\u002F01\u002Fsweeper-a-hat-tip-to-the-simple-fun-games\u002F) ([Play web version :heart:](https:\u002F\u002Fgames.evilsoftwareempire.com\u002Fsweeper\u002Fplay\u002F))\n- [tabdeeli](https:\u002F\u002Fgithub.com\u002Ftypon\u002Ftabdeeli)\n- [terminal-rain](https:\u002F\u002Fgithub.com\u002FOakamoore\u002Fterminal-rain)\n- [tic-tac-toe](https:\u002F\u002Fgithub.com\u002Fbirland\u002Ftic-tac-toe)\n- [tiles](https:\u002F\u002Fgithub.com\u002Ftusharpm\u002Ftiles)\n- [todoman](https:\u002F\u002Fgithub.com\u002Faaleino\u002Ftodoman)\n- [turing_cmd](https:\u002F\u002Fgithub.com\u002FDanArmor\u002Fturing_cmd)\n- [typing-speed-test](https:\u002F\u002Fcodeberg.org\u002Fymcx\u002Ftyping-speed-test)\n- [vantage](https:\u002F\u002Fgithub.com\u002Fgokulmaxi\u002Fvantage)\n- [x86-64 CPU Architecture Simulation](https:\u002F\u002Fgithub.com\u002FAnisBdz\u002FCPU)\n- [C++ Process Manager](https:\u002F\u002Fgithub.com\u002Fondrejhonus\u002Fcpp_proc)\n\n### [cpp-best-practices\u002Fgame_jam](https:\u002F\u002Fgithub.com\u002Fcpp-best-practices\u002Fgame_jam)\n\nSeveral games using the FTXUI have been made during the Game Jam:\n- [TermBreaker](https:\u002F\u002Fgithub.com\u002FArthurSonzogni\u002FtermBreaker) [**[Play web version]**](https:\u002F\u002Farthursonzogni.com\u002FTermBreaker\u002F)\n- [Minesweeper Marathon](https:\u002F\u002Fgithub.com\u002Fcpp-best-practices\u002Fgame_jam\u002Fblob\u002Fmain\u002FJam1_April_2022\u002Fminesweeper_marathon.md) [**[Play web version]**](https:\u002F\u002Fbarlasgarden.com\u002Fminesweeper\u002Findex.html)\n- [Grand Rounds](https:\u002F\u002Fgithub.com\u002Fcpp-best-practices\u002Fgame_jam\u002Fblob\u002Fmain\u002FJam1_April_2022\u002Fgrandrounds.md)\n- [LightsRound](https:\u002F\u002Fgithub.com\u002Fcpp-best-practices\u002Fgame_jam\u002Fblob\u002Fmain\u002FJam1_April_2022\u002FLightsRound.v.0.1.0.md)\n- [DanteO](https:\u002F\u002Fgithub.com\u002Fcpp-best-practices\u002Fgame_jam\u002Fblob\u002Fmain\u002FJam1_April_2022\u002Fdanteo.md)\n- [Sumo](https:\u002F\u002Fgithub.com\u002Fcpp-best-practices\u002Fgame_jam\u002Fblob\u002Fmain\u002FJam1_April_2022\u002Fsumo.md)\n- [Drag Me aROUND](https:\u002F\u002Fgithub.com\u002Fcpp-best-practices\u002Fgame_jam\u002Fblob\u002Fmain\u002FJam1_April_2022\u002Fdrag_me_around.md)\n- [DisarmSelfDestruct](https:\u002F\u002Fgithub.com\u002Fcpp-best-practices\u002Fgame_jam\u002Fblob\u002Fmain\u002FJam1_April_2022\u002FDisarmSelfDestruct.md)\n- [TheWorld](https:\u002F\u002Fgithub.com\u002Fcpp-best-practices\u002Fgame_jam\u002Fblob\u002Fmain\u002FJam1_April_2022\u002FTheWorld.md)\n- [smoothlife](https:\u002F\u002Fgithub.com\u002Fcpp-best-practices\u002Fgame_jam\u002Fblob\u002Fmain\u002FJam1_April_2022\u002Fsmoothlife.md)\n- [Consu](https:\u002F\u002Fgithub.com\u002Fcpp-best-practices\u002Fgame_jam\u002Fblob\u002Fmain\u002FJam1_April_2022\u002Fconsu.md)\n\n\n## Build using CMake\n\nIt is **highly** recommended to use CMake FetchContent to depend on FTXUI so you may specify which commit you would like to depend on.\n```cmake\ninclude(FetchContent)\nFetchContent_Declare(ftxui\n  GIT_REPOSITORY https:\u002F\u002Fgithub.com\u002FArthurSonzogni\u002Fftxui\n  GIT_TAG v7.0.1\n)\nFetchContent_MakeAvailable(ftxui)\n\ntarget_link_libraries(your_target PRIVATE\n    # Use the umbrella target (recommended)\n    ftxui::ftxui\n\n    # Or chose a submodule\n    # ftxui::component\n    # ftxui::dom\n    # ftxui::screen\n)\n```\n\n# Build using Bazel\n\n**MODULE.bazel**\n```starlark\nbazel_dep(\n    name = \"ftxui\",\n    version = \"7.0.1\",\n)\n```\n\n**BUILD.bazel**\n```starlark\ncc_binary(\n    name = \"your_target\",\n    srcs = [\"your_source.cc\"],\n    deps = [\n        # Choose submodules\n        \"@ftxui\u002F\u002F:component\",\n        \"@ftxui\u002F\u002F:dom\",\n        \"@ftxui\u002F\u002F:screen\",\n        \n        # Or use the single ftxui target (includes all modules)\n        # \"@ftxui\u002F\u002F:ftxui\",\n    ],\n)\n```\n\n## Build using Meson\n\nFTXUI can also be built using [Meson](https:\u002F\u002Fmesonbuild.com\u002F). See [doc\u002Finstallation_meson.md](doc\u002Finstallation_meson.md) for detailed instructions.\n\n```bash\nmeson setup builddir\nninja -C builddir\n```\n\nTo use FTXUI as a subproject in your Meson project, create a `subprojects\u002Fftxui.wrap` file or use it as a dependency:\n```meson\nftxui_dep = dependency('ftxui-component')\n```\n\n\n# Build with something else:\nIf you don't, FTXUI may be used from the following packages:\n- CMake [FetchContent]([https:\u002F\u002Fbewagner.net\u002Fprogramming\u002F2020\u002F05\u002F02\u002Fcmake-fetchcontent\u002F](https:\u002F\u002Fcmake.org\u002Fcmake\u002Fhelp\u002Flatest\u002Fmodule\u002FFetchContent.html)) (preferred),\n- [Bazel](https:\u002F\u002Fregistry.bazel.build\u002Fmodules\u002Fftxui),\n- [vcpkg](https:\u002F\u002Fvcpkg.link\u002Fports\u002Fftxui),\n- [Conan](https:\u002F\u002Fconan.io\u002Fcenter\u002Frecipes\u002Fftxui)\n- [Debian package](https:\u002F\u002Ftracker.debian.org\u002Fpkg\u002Fftxui),\n- [Ubuntu package](https:\u002F\u002Flaunchpad.net\u002Fubuntu\u002F+source\u002Fftxui),\n- [Arch Linux](https:\u002F\u002Faur.archlinux.org\u002Fpackages\u002Fftxui\u002F),\n- [OpenSUSE](https:\u002F\u002Fbuild.opensuse.org\u002Fpackage\u002Fshow\u002Fdevel:libraries:c_c++\u002Fftxui),\n- [Nix](https:\u002F\u002Fgithub.com\u002FArthurSonzogni\u002FFTXUI\u002Fblob\u002Fmain\u002Fflake.nix),\n\n[![Packaging status](https:\u002F\u002Frepology.org\u002Fbadge\u002Fvertical-allrepos\u002Flibftxui.svg)](https:\u002F\u002Frepology.org\u002Fproject\u002Flibftxui\u002Fversions)\n\n\nIf you choose to build and link FTXUI yourself, `ftxui-component` must be first in the linking order relative to the other FTXUI libraries, i.e.\n```bash\ng++ . . . -lftxui-component -lftxui-dom -lftxui-screen . . .\n```\n\nTo build FTXUI with modules, check [documentation](https:\u002F\u002Farthursonzogni.github.io\u002FFTXUI\u002Fcpp20-modules.html)\n\n## Contributors\n\n\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FArthurSonzogni\u002FFTXUI\u002Fgraphs\u002Fcontributors\">\n  \u003Cimg src=\"https:\u002F\u002Fcontrib.rocks\u002Fimage?repo=ArthurSonzogni\u002FFTXUI\" \u002F>\n\u003C\u002Fa>\n","FTXUI 是一个基于 C++ 的跨平台终端用户界面（TUI）开发库，采用函数式编程风格设计，灵感源自 React。它支持键盘与鼠标交互、UTF-8 及全宽字符渲染、组件化布局与简单动画，提供声明式语法和轻量级依赖（仅需标准库）。适用于构建命令行工具、系统监控面板、CLI 管理后台、嵌入式终端应用等需要美观、响应式终端界面的场景，特别适合对性能和可移植性有要求的 C++ 项目。",2,"2026-07-17 02:30:06","trending"]