💻 C++ Functional Terminal User Interface. ❤️
Go to file
2019-01-12 18:24:46 +01:00
examples Refactor component containers. 2019-01-12 18:24:46 +01:00
ftxui Refactor component containers. 2019-01-12 18:24:46 +01:00
.clang-format Add colors. 2018-10-12 09:23:37 +02:00
CMakeLists.txt Separator ftxui::{screen,dom,component} into separate build unit. 2019-01-06 18:53:02 +01:00
LICENSE Add LICENSE. Add take_any_args. 2019-01-06 16:14:19 +01:00
README.md Add build example in README.md 2019-01-06 19:22:41 +01:00
tutorial.md Update tutorial.md and readme.md 2019-01-06 15:46:35 +01:00

FTXUI

A C++ library for making text based user interface.

Feature

  • Functional style.
  • Simple and elegant syntax (in my opinion).
  • No dependencies.

Example:

  vbox(
    hbox(
      text(L"left") | frame,
      text(L"middle") | frame | flex,
      text(L"right") | frame
    ),
    gauge(0.5) | frame
  )
┌────┐┌───────────────────────────────────────────────────────────────┐┌─────┐
│left││middle                                                         ││right│
└────┘└───────────────────────────────────────────────────────────────┘└─────┘
┌────────────────────────────────────────────────────────────────────────────┐
│██████████████████████████████████████                                      │
└────────────────────────────────────────────────────────────────────────────┘

Tutorial

See Tutorial

Build using CMake

mkdir build
cd build
cmake ..
make
sudo make install

Use library using CMake

CMakeLists.txt

cmake_minimum_required(VERSION 3.0)

find_package(ftxui REQUIRED)
add_executable(main main.cpp)
target_link_libraries(main PUBLIC ftxui::dom)

main.cpp

#include "ftxui/screen/screen.hpp"
#include "ftxui/dom/elements.hpp"
#include <iostream>

int main(int argc, const char *argv[])
{
  using namespace ftxui::screen;
  using namespace ftxui::dom;
  auto document =
    hbox(
      text(L"left") | bold,
      text(L"middle") | flex,
      text(L"right")
    ),
  auto screen = Screen::TerminalOutput(document);
  Render(screen, document.get());

  std::cout << screen.ToString();

  return 0;
}