💻 C++ Functional Terminal User Interface. ❤️
Go to file
Arthur Sonzogni 71299daea4
Factorize box layout functions. (#185)
|hbox| and |vbox| are similar. They are just the same component, but
drawing in a different direction.

This patchs factorize the layout logic. Goal is to reduce code size and
reuse it for the |gridbox| dom element.

Bug: https://github.com/ArthurSonzogni/FTXUI/issues/114
2021-08-10 14:20:03 +02:00
.github Merge Documentation and Emscripten workflow (#166) 2021-07-25 19:31:45 +02:00
.nxxm Add nxxm suport. 2020-12-21 15:36:04 +01:00
cmake Prefer std::string over std::wstring. (#179) 2021-08-08 23:25:20 +02:00
doc Update docs to use std::string. (#184) 2021-08-09 22:51:48 +02:00
examples Update examples to use std::string. (#182) 2021-08-09 00:27:37 +02:00
include/ftxui Update examples to use std::string. (#182) 2021-08-09 00:27:37 +02:00
src/ftxui Factorize box layout functions. (#185) 2021-08-10 14:20:03 +02:00
tools Improve documentation workflow (#163) 2021-07-23 08:40:47 +02:00
.clang-format Variou details: 2020-08-28 23:54:25 +02:00
CMakeLists.txt Factorize box layout functions. (#185) 2021-08-10 14:20:03 +02:00
ftxui-config.cmake.in add dependency to Threads into generated cmake config (#52) 2020-10-16 22:07:30 +02:00
iwyu.imp Format using iwyu. 2021-05-15 00:19:19 +02:00
LICENSE Add LICENSE. Add take_any_args. 2019-01-06 16:14:19 +01:00
README.md Update docs to use std::string. (#184) 2021-08-09 22:51:48 +02:00

FTXUI

issues license contributors

Functional Terminal (X) User interface

A simple C++ library for terminal based user interface.

Demo:

Demo image

Feature

  • Functional style. Inspired by [1] and React
  • Simple and elegant syntax (in my opinion).
  • Support for UTF8 and fullwidth chars (→ 测试).
  • No dependencies.
  • Cross platform. Linux/mac (main target), Windows (experimental thanks to contributors), WebAssembly.
  • Keyboard & mouse navigation.

Operating systems

  • linux-emscripten
  • linux-gcc linux-clang
  • windows-msvc
  • mac-clang

Example:

  vbox({
    hbox({
      text("left") | border,
      text("middle") | border | flex,
      text("right") | border,
    }),
    gauge(0.5) | border,
  });
┌────┐┌───────────────────────────────────────────────────────────────┐┌─────┐
│left││middle                                                         ││right│
└────┘└───────────────────────────────────────────────────────────────┘└─────┘
┌────────────────────────────────────────────────────────────────────────────┐
│██████████████████████████████████████                                      │
└────────────────────────────────────────────────────────────────────────────┘

Documentation:

Project using FTXUI

Feel free to add your projects here:

Hosted on:

External package:

It is highly recommanded to use cmake FetchContent to depends on FTXUI. This way you can specify which commit you would like to depends on.

If you don't, the following packages have been created: