FTXUI/README.md
2019-01-18 22:46:28 +01:00

2.3 KiB

FTXUI

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

Feature

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

Other features

  • vim navigation friendly (h,j,k,l)

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;
  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;
}