Repolode
ArthurSonzogni

ArthurSonzogni/FTXUI

外部依存なしで、関数型のコンポーネント駆動スタイルを使ったターミナルUIを構築できる、ヘッダー形式のC++ライブラリです。

スター
10,829
フォーク
628
未解決の Issue
34
最終コミット
13 時間前

これは何?

FTXUIは、ターミナルUIを構築するためのC++ライブラリです。hbox、vbox、gridboxなどの関数を使って要素をツリー状に組み合わせ、レイアウトを記述してターミナルに描画できます。ボタン、メニュー、入力欄、スライダー、チェックボックス、ドロップダウンなどのインタラクティブなウィジェットは、キーボード、マウス、画面サイズ変更のイベントに応答するコンポーネントとして用意されています。

ライブラリは3つのモジュールで構成されています。screenは色や文字の低レベルな描画、domはレイアウトとスタイル、componentはユーザー操作とメインイベントループを担当します。UTF-8や全角文字、色、テキスト装飾、点字やブロック文字を使ったキャンバス描画、アニメーションに対応しています。依存関係はなく、CMake FetchContent、Bazel、Meson、vcpkg、Conan、または単一ヘッダーにまとめたビルドとして利用でき、C++20 modulesもサポートしています。対応プラットフォームはLinux、macOS、WebAssembly、Windowsです。

主な機能

  • 01レイアウトやインタラクティブなウィジェットを組み立てる、関数型のコンポーネントベースAPI
  • 02メニュー、入力欄、スライダーなどの組み込みウィジェットと、キーボード・マウスによる操作
  • 03hbox、vbox、gridbox、flexboxを使った柔軟なレイアウト
  • 04点字、ブロック文字、または単純な文字を使ったキャンバス描画
  • 05外部依存なしでUTF-8と全角文字に対応

ユースケース

  • メニュー、フォーム、ダッシュボードを備えたインタラクティブなCLIツールの構築
  • ターミナルゲームや、アニメーション付きのテキストモード可視化の作成
  • ターミナルサイズに合わせて表示を調整するシステムモニターやログビューアの作成

クイックスタート

  1. 1

    READMEで推奨されている方法であるCMake FetchContentを使って、C++プロジェクトにFTXUIを追加します

  2. 2

    ヘッダー <ftxui/ftxui.hpp> をインクルードし、CMakeターゲット ftxui::ftxui をリンクします

使う前に知っておきたいこと

  • 主な対象はLinuxとmacOSです。Windowsのサポートはコントリビューターによって提供されています。

トピック

よくある質問

FTXUI とは?
外部依存なしで、関数型のコンポーネント駆動スタイルを使ったターミナルUIを構築できる、ヘッダー形式のC++ライブラリです。 FTXUIは、ターミナルUIを構築するためのC++ライブラリです。hbox、vbox、gridboxなどの関数を使って要素をツリー状に組み合わせ、レイアウトを記述してターミナルに描画できます。ボタン、メニュー、入力欄、スライダー、チェックボックス、ドロップダウンなどのインタラクティブなウィジェットは、キーボード、マウス、画面サイズ変更のイベントに応答するコンポーネントとして用意されています。
FTXUI は無料で使えますか?ライセンスは?
FTXUI は MIT ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
FTXUI は今もメンテナンスされていますか?
活発にメンテナンス中。FTXUI の最終コミットは 2026年10月21日 です。
FTXUI は何に使えますか?
メニュー、フォーム、ダッシュボードを備えたインタラクティブなCLIツールの構築 ターミナルゲームや、アニメーション付きのテキストモード可視化の作成 ターミナルサイズに合わせて表示を調整するシステムモニターやログビューアの作成
FTXUI のインストール方法は?
READMEで推奨されている方法であるCMake FetchContentを使って、C++プロジェクトにFTXUIを追加します ヘッダー <ftxui/ftxui.hpp> をインクルードし、CMakeターゲット ftxui::ftxui をリンクします
FTXUI はどこで入手できますか?
ソースコードとインストール手順は GitHub にあります:https://github.com/ArthurSonzogni/FTXUI

概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。

関連プロジェクト