2019-01-06 08:37:26 +08:00
# FTXUI
2019-01-27 23:56:37 +08:00
2020-04-10 20:46:42 +08:00
[![issues][badge.issues]][issues]
[![license][badge.license]][license]
2020-04-10 20:48:52 +08:00
[![contributors][badge.contributors]][contributors]
2020-03-27 08:20:06 +08:00
2020-04-10 20:46:42 +08:00
[badge.issues]: https://img.shields.io/github/issues-raw/arthursonzogni/FTXUI
[badge.license]: https://img.shields.io/github/license/arthursonzogni/FTXUI?color=black
2020-04-10 20:48:52 +08:00
[badge.contributors]: https://img.shields.io/github/contributors/arthursonzogni/FTXUI?color=blue
2021-03-21 21:08:09 +08:00
2020-04-10 20:46:42 +08:00
[issues]: https://github.com/ArthurSonzogni/FTXUI/issues
[license]: http://opensource.org/licenses/MIT
2020-04-10 20:48:52 +08:00
[contributors]: https://github.com/ArthurSonzogni/FTXUI/graphs/contributors
2020-04-10 20:46:42 +08:00
2020-04-10 20:28:12 +08:00
**Functional Terminal (X) User interface**
A simple C++ library for terminal based user interface.
2019-01-27 23:56:37 +08:00
## Demo:
![Demo image ](./examples/component/homescreen.gif )
2019-01-06 08:37:26 +08:00
## Feature
2019-01-28 00:20:55 +08:00
* Functional style. Inspired by
2019-06-30 01:05:22 +08:00
[[1]](https://hackernoon.com/building-reactive-terminal-interfaces-in-c-d392ce34e649?gi=d9fb9ce35901)
2019-01-28 00:20:55 +08:00
and [React ](https://reactjs.org/ )
2019-01-06 08:37:26 +08:00
* Simple and elegant syntax (in my opinion).
2021-06-10 14:45:39 +08:00
* Support for [UTF8 ](https://en.wikipedia.org/wiki/UTF-8 ) and [fullwidth chars ](https://en.wikipedia.org/wiki/Halfwidth_and_fullwidth_forms ) (→ 测试). (% [except combining characters ](https://github.com/ArthurSonzogni/FTXUI/issues/109 ))
2019-01-06 08:37:26 +08:00
* No dependencies.
2021-06-10 14:45:39 +08:00
* Cross platform (mostly). Linux/mac (main target), Windows (experimental).
2021-05-02 05:54:51 +08:00
* Keyboard & mouse navigation.
2019-01-19 05:45:25 +08:00
2021-03-21 21:08:09 +08:00
## Operating systems
2021-06-10 14:45:39 +08:00
- [![linux-emscripten][badge.linux-emscripten]][link.linux-emscripten]
2021-03-21 21:08:09 +08:00
- [![linux-gcc][badge.linux-gcc]][link.linux-gcc]
2021-03-22 07:28:19 +08:00
[![linux-clang][badge.linux-clang]][link.linux-clang]
2021-03-21 21:08:09 +08:00
- [![windows-msvc][badge.windows-msvc]][link.windows-msvc]
- [![mac-clang][badge.mac-clang]][link.mac-clang]
[badge.linux-gcc]: https://github.com/ArthurSonzogni/FTXUI/actions/workflows/linux-gcc.yaml/badge.svg?branch=master
[badge.linux-clang]: https://github.com/ArthurSonzogni/FTXUI/actions/workflows/linux-clang.yaml/badge.svg?branch=master
[badge.linux-emscripten]: https://github.com/ArthurSonzogni/FTXUI/actions/workflows/linux-emscripten.yaml/badge.svg?branch=master
[badge.windows-msvc]: https://github.com/ArthurSonzogni/FTXUI/actions/workflows/windows-msvc.yaml/badge.svg?branch=master
[badge.mac-clang]: https://github.com/ArthurSonzogni/FTXUI/actions/workflows/mac-clang.yaml/badge.svg?branch=master
[link.linux-gcc]: https://github.com/ArthurSonzogni/FTXUI/actions/workflows/linux-gcc.yaml
[link.linux-clang]: https://github.com/ArthurSonzogni/FTXUI/actions/workflows/linux-clang.yaml
[link.linux-emscripten]: https://github.com/ArthurSonzogni/FTXUI/actions/workflows/linux-emscripten.yaml
[link.windows-msvc]: https://github.com/ArthurSonzogni/FTXUI/actions/workflows/windows-msvc.yaml
[link.mac-clang]: https://github.com/ArthurSonzogni/FTXUI/actions/workflows/mac-clang.yaml
2019-01-06 08:37:26 +08:00
## Example:
~~~cpp
2020-05-21 04:12:20 +08:00
vbox({
hbox({
2019-01-20 05:06:05 +08:00
text(L"left") | border,
text(L"middle") | border | flex,
2020-06-02 05:40:32 +08:00
text(L"right") | border,
2020-05-21 04:12:20 +08:00
}),
2020-06-02 05:40:32 +08:00
gauge(0.5) | border,
});
2019-01-06 08:37:26 +08:00
~~~
~~~bash
┌────┐┌───────────────────────────────────────────────────────────────┐┌─────┐
│left││middle ││right│
└────┘└───────────────────────────────────────────────────────────────┘└─────┘
┌────────────────────────────────────────────────────────────────────────────┐
│██████████████████████████████████████ │
└────────────────────────────────────────────────────────────────────────────┘
~~~
2020-08-09 23:14:31 +08:00
# Documentation:
2019-02-02 08:59:48 +08:00
2020-08-11 00:26:28 +08:00
- [Starter example project ](https://github.com/ArthurSonzogni/ftxui-starter )
2021-03-21 20:42:12 +08:00
- [Documentation ](https://arthursonzogni.com/FTXUI/doc/ )
2021-03-22 07:26:52 +08:00
- [Examples (WebAssembly) ](https://arthursonzogni.com/FTXUI/examples/ )
2020-08-09 23:14:31 +08:00
- [Build using CMake ](https://arthursonzogni.com/FTXUI/doc/#build-using-cmake )
- [Build using nxxm ](https://arthursonzogni.com/FTXUI/doc/#build-using-cmake )
2019-01-06 08:37:26 +08:00
2019-01-28 00:11:43 +08:00
## Project using FTXUI
2020-04-20 03:46:37 +08:00
Feel free to add your projects here:
2021-05-23 18:52:59 +08:00
- [git-tui ](https://github.com/ArthurSonzogni/git-tui )
2021-05-02 21:45:52 +08:00
- [rgb-tui ](https://github.com/ArthurSonzogni/rgb-tui )
2020-05-30 04:51:34 +08:00
- [chrome-log-beautifier ](https://github.com/ArthurSonzogni/chrome-log-beautifier )
2020-05-15 01:12:35 +08:00
- [x86-64 CPU Architecture Simulation ](https://github.com/AnisBdz/CPU )
2020-08-13 04:18:59 +08:00
- [ltuiny ](https://github.com/adrianoviana87/ltuiny )
2020-04-20 03:46:37 +08:00
- [i3-termdialogs ](https://github.com/mibli/i3-termdialogs )
2020-05-01 23:12:39 +08:00
- [Just-Fast ](https://github.com/GiuseppeCesarano/just-fast )
2020-08-12 22:23:39 +08:00
- [simpPRU ](https://github.com/VedantParanjape/simpPRU )
2020-09-06 19:53:33 +08:00
- [Pigeon ROS TUI ](https://github.com/PigeonSensei/Pigeon_ros_tui )
2021-02-15 02:39:22 +08:00
- [hastur ](https://github.com/robinlinden/hastur )
- [CryptoCalculator ](https://github.com/brevis/CryptoCalculator )
2021-04-23 20:09:12 +08:00
- [todoman ](https://github.com/aaleino/todoman )
2019-01-28 00:11:43 +08:00
2019-01-28 00:20:55 +08:00
## Hosted on:
* [github ](https://github.com/ArthurSonzogni/ftxui )
* [gitlab ](https://gitlab.com/ArthurSonzogni/ftxui )