Project Name | Stars | Downloads | Repos Using This | Packages Using This | Most Recent Commit | Total Releases | Latest Release | Open Issues | License | Language |
---|---|---|---|---|---|---|---|---|---|---|
Vhs | 12,355 | a day ago | 8 | July 20, 2023 | 58 | mit | Go | |||
Your CLI home video recorder 📼 | ||||||||||
Ftxui | 5,466 | 12 days ago | 32 | mit | C++ | |||||
:computer: C++ Functional Terminal User Interface. :heart: | ||||||||||
Screenfetch | 3,682 | 2 days ago | 1 | February 27, 2018 | 147 | gpl-3.0 | Shell | |||
Fetches system/theme information in terminal for Linux desktop screenshots. | ||||||||||
Asciimatics | 3,449 | 58 | 61 | 19 hours ago | 24 | October 25, 2023 | 22 | apache-2.0 | Python | |
A cross platform package to do curses-like operations, plus higher level APIs and widgets to create text UIs and ASCII art animations | ||||||||||
Gif For Cli | 2,862 | 2 | 8 months ago | 4 | July 26, 2019 | 18 | apache-2.0 | Python | ||
Asciigraph | 2,262 | 7 | 74 | 4 months ago | 19 | June 23, 2023 | 11 | bsd-3-clause | Go | |
Go package to make lightweight ASCII line graph ╭┈╯ in command line apps with no other dependencies. | ||||||||||
Tvision | 1,706 | 12 days ago | 17 | other | C++ | |||||
A modern port of Turbo Vision 2.0, the classical framework for text-based user interfaces. Now cross-platform and with Unicode support. | ||||||||||
Asciichart | 1,696 | 84 | 150 | a month ago | 47 | August 17, 2020 | 21 | mit | Python | |
Nice-looking lightweight console ASCII line charts ╭┈╯ for NodeJS, browsers and terminal, no dependencies | ||||||||||
Video To Ascii | 1,574 | 1 | 6 days ago | 29 | May 02, 2021 | 27 | mit | Python | ||
It is a simple python package to play videos in the terminal using characters as pixels | ||||||||||
Ervy | 1,574 | 6 | 12 | 3 months ago | 8 | January 07, 2020 | 3 | mit | JavaScript | |
Bring charts to terminal. |
Documentation
Report a Bug
Examples .
Request Feature
Send a Pull Request
Functional Terminal (X) User interface
A simple cross-platform C++ library for terminal based user interfaces!
vbox({
hbox({
text("one") | border,
text("two") | border | flex,
text("three") | border | flex,
}),
gauge(0.25) | color(Color::Red),
gauge(0.50) | color(Color::White),
gauge(0.75) | color(Color::Blue),
});
This module defines a hierarchical set of Element. An element manages layout and can be responsive to the terminal dimensions.
They are declared in <ftxui/dom/elements.hpp>
Element can be arranged together:
hbox
vbox
gridbox
flexbox
.Element can become flexible using the the flex
decorator.
Example using hbox
, vbox
and filler
.
Example using gridbox:
Example using flexbox:
An element can be decorated using the functions:
bold
dim
inverted
underlined
underlinedDouble
blink
strikethrough
color
bgcolor
hyperlink
FTXUI supports the pipe operator. It means: decorator1(decorator2(element))
and element | decorator1 | decorator2
can be used.
Use decorator border and element separator() to subdivide your UI:
auto document = vbox({
text("top"),
separator(),
text("bottom"),
}) | border;
Demo:
A simple piece of text is represented using text("content")
.
To support text wrapping following spaces the following functions are provided:
Element paragraph(std::string text);
Element paragraphAlignLeft(std::string text);
Element paragraphAlignRight(std::string text);
Element paragraphAlignCenter(std::string text);
Element paragraphAlignJustify(std::string text);
Drawing can be made on a Canvas, using braille, block, or simple characters:
Simple example:
Complex examples:
The ftxui/component is needed when you want to produce dynamic UI, reactive to the user's input. It defines a set of ftxui::Component. A component reacts to Events (keyboard, mouse, resize, ...) and Render Element (see previous section).
Prebuilt components are declared in <ftxui/component/component.hpp>
Feel free to add your projects here:
Several games using the FTXUI have been made during the Game Jam:
It is highly recommended to use CMake FetchContent to depend on FTXUI. This way you can specify which commit you would like to depend on.
include(FetchContent)
FetchContent_Declare(ftxui
GIT_REPOSITORY https://github.com/ArthurSonzogni/ftxui
GIT_TAG v5.0.0
)
FetchContent_GetProperties(ftxui)
if(NOT ftxui_POPULATED)
FetchContent_Populate(ftxui)
add_subdirectory(${ftxui_SOURCE_DIR} ${ftxui_BINARY_DIR} EXCLUDE_FROM_ALL)
endif()
If you don't, the following packages have been created: