💻 C++ Functional Terminal User Interface. ❤️
Go to file
2019-01-27 17:17:29 +01:00
examples Add Demo GIF. 2019-01-27 16:23:12 +01:00
ftxui Add example homepage.cpp 2019-01-27 02:33:06 +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 Update "Hosted on" section. 2019-01-27 17:17:29 +01:00
tutorial.md Update README and tutorial. 2019-01-27 16:56:37 +01:00

FTXUI

Functional Terminal (X) User interface

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

Demo:

Demo image

Feature

  • Functional style.
  • Simple and elegant syntax (in my opinion).
  • No dependencies.
  • vim navigation friendly (h,j,k,l)

Example:

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

Tutorial

See Tutorial

Project using FTXUI

None! This is still a newborn project. Please add a link to your project here.

Hosted on:

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::Create(Dimension::Full, Dimension::Fit(document));
  Render(screen, document.get());

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

  return 0;
}