# FTXUI **Functional Terminal (X) User interface** A simple C++ library for terminal based user interface. ## Demo: ![Demo image](./examples/component/homescreen.gif) ## Feature * Functional style. Inspired by [1](https://hackernoon.com/building-reactive-terminal-interfaces-in-c-d392ce34e649?gi=d9fb9ce35901) and [React](https://reactjs.org/) * Simple and elegant syntax (in my opinion). * No dependencies. ## Example: ~~~cpp vbox( hbox( text(L"left") | border, text(L"middle") | border | flex, text(L"right") | border ), gauge(0.5) | border ) ~~~ ~~~bash ┌────┐┌───────────────────────────────────────────────────────────────┐┌─────┐ │left││middle ││right│ └────┘└───────────────────────────────────────────────────────────────┘└─────┘ ┌────────────────────────────────────────────────────────────────────────────┐ │██████████████████████████████████████ │ └────────────────────────────────────────────────────────────────────────────┘ ~~~ ## Tutorial See [Tutorial](./tutorial.md) ## Project using FTXUI None! This is still a newborn project. Please add a link to your project here. ## Build using CMake ~~~bash mkdir build && cd build cmake .. make sudo make install ~~~ ## Use library using CMake CMakeLists.txt ~~~cmake cmake_minimum_required(VERSION 3.0) find_package(ftxui REQUIRED) add_executable(main main.cpp) target_link_libraries(main PUBLIC ftxui::dom) ~~~ main.cpp ~~~cpp #include "ftxui/screen/screen.hpp" #include "ftxui/dom/elements.hpp" #include 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; } ~~~ ## Hosted on: * [github](https://github.com/ArthurSonzogni/ftxui) * [gitlab](https://gitlab.com/ArthurSonzogni/ftxui)