FTXUI/README.md

108 lines
5.6 KiB
Markdown
Raw Normal View History

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).
* 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.
* 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
- [![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,
text(L"right") | border,
2020-05-21 04:12:20 +08:00
}),
gauge(0.5) | border,
});
2019-01-06 08:37:26 +08:00
~~~
~~~bash
┌────┐┌───────────────────────────────────────────────────────────────┐┌─────┐
│left││middle ││right│
└────┘└───────────────────────────────────────────────────────────────┘└─────┘
┌────────────────────────────────────────────────────────────────────────────┐
│██████████████████████████████████████ │
└────────────────────────────────────────────────────────────────────────────┘
~~~
# Documentation:
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/)
- [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)
## External install.
It is **highly** recommanded to use cmake FetchContent to depends on FTXUI. This
way you can specify uppon which commit hash you would like to depend on.
Alternatively, the following packages have been created.
- vcpkg ([soon](https://github.com/ArthurSonzogni/FTXUI/issues/112))
- [Arch Linux PKGBUILD](https://aur.archlinux.org/packages/ftxui-git/).