FTXUI/doc/introduction.md
2025-05-29 08:18:56 +02:00

2.5 KiB

@mainpage Introduction @tableofcontents

Demo image

FTXUI is simple cross-platform C++ library for terminal based user interfaces!

Feature

  • Functional style. Inspired by 1 and React
  • No dependencies
  • Cross platform.
  • Simple and elegant syntax (in my opinion)
  • Keyboard & mouse navigation.
  • Support for UTF8 and fullwidth chars (→ 测试)
  • Support for animations. Demo 1, Demo 2
  • Support for drawing. Demo
  • Learn by examples, and tutorials
  • Multiple build system and packages:
  • Good practices: documentation, tests, fuzzers, performance tests, automated CI, automated packaging, etc...

Example

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

int main() {
  using namespace ftxui;

  // Create a simple document with three text elements.
  Element document = hbox({
    text("left")   | border,
    text("middle") | border | flex,
    text("right")  | border,
  });

  // Create a screen with full width and height fitting the document.
  auto screen = Screen::Create(
    Dimension::Full(),       // Width
    Dimension::Fit(document) // Height
  );

  // Render the document onto the screen.
  Render(screen, document);

  // Print the screen to the console.
  screen.Print();
}

Expected output:

┌────┐┌────────────────────────────────────┐┌─────┐
│left││middle                              ││right│
└────┘└────────────────────────────────────┘└─────┘

Supported Platforms

  • Linux
  • MacOS
  • Windows
  • WebAssembly