このプロジェクトについて
D.A.B.T(DinosAmazingBashTui)は純粋なbashで書かれたターミナルUIフレームワークであり、同じコマンドにアプリケーションマネージャーも含まれている。Python、Node、ncursesを導入せずにマルチページのターミナルインターフェースを求めるシェルスクリプトを対象としている。要件はBash 5.0以上、マウス対応のターミナルエミュレータ、自己更新時のみcurl/wgetとtarが必要とされている。
アプリの構築方法
インターフェースは命令的なコードではなくXMLページで宣言される。ページはbashコールバックスクリプトとスタイルシートを参照し、ペイン(hsplit/vsplit/grid/tabs)、ラベル、ボタン、インプットなどのウィジェットを構成できる。ページはpage="other.xml"で相互にリンクされ、切り替え用にキャッシュされる。テーマはCSS風で、fg、bg、modsを持つ再利用可能なクラスと、:focus、:border、:titleなどの擬似状態を備え、デモには5つのテーマが同梱されている。コールバックはaction=またはsubmit=属性から名前で参照される通常のbash関数である。
ウィジェットと操作
READMEには、label、button、checkbox、input、password、複数行のtextarea、list、table、select、progressの各ウィジェット、選択、単語ジャンプ、切り取り/コピー/貼り付け、元に戻す/やり直し、クリックドラッグやマルチクリック動作を備えたテキスト編集エンジン、複数のトースト表示位置を持つダイアログ/トースト(confirm、message、prompt、choose、view、notify)が記載されている。入力処理はマウスクリックのルーティングとホバーフィードバック、Tabフォーカス循環、検索可能なコマンドパレット、アプリごとに保存される再バインド可能なキー、フッターのキーバーに対応する。スクロールはバッチ処理されたAWKベースのビューポートを使用し、クリックでジャンプするスクロールバー、ホイール、Vimキーを備える。
ライブプロセスとスタンドアロンレンダラー
実際のPTYプロセスをペインにストリーミングでき、stdinパイプ、キャンセル、保存、再試行が可能である。別途、box、table、gauge、hbar、tree、banner、CSVチャートなどのレンダラーはTUIの外部でも使用できると説明されている。
アプリマネージャー、プラグイン、更新
dabtコマンドはフォルダまたはgit URLからアプリをインストールし、一覧表示/検査/実行/更新/削除、インストールおよびアンインストールフックの実行、自身の更新またはアンインストールができる。更新はチェックサムマニフェストによる三方同期を使用し、追加・変更・削除されたファイルをプレビューする。競合は上書き、スキップ、.newファイルとして書き出し、またはdiff表示が可能で、置き換えられるファイルはバックアップされる。プラグインはアプリ間で共有される単一のbashファイルで、~/.config/DABT/pluginsに配置され、実行時に有効化、無効化、再読み込み、インストール、削除ができる。同梱のterminal_shortcutsプラグインはターミナルを検出し、飲み込まれたキーを一時的に解放する。
セキュリティスキャン
アプリとプラグインはシェルコードであるため、インストールはスキャンでゲートされる。内蔵スキャナは純粋なbash/POSIXユーティリティに対するgrepルールを使用し、HIGH項目(curl|sh、base64|sh、リバースシェル、破壊的なrm/dd/mkfs、setuid、passwd/sudoers/authorized_keysへの編集、埋め込まれたキー)とWARN項目(ダウンロード、変数のeval、sudo、永続化、ハードコードされたシークレット、システムパスへの書き込み)をフラグする。READMEはこれがテキストパターンマッチングのみであり、変数を追跡したり難読化を検出したりすることはできず、クリーンなレポートは保証ではないと明記している。オプションのShellCheckおよびSemgrep統合はより深く検査する。これらはオプトインであり、正確なコマンドを表示して確認した後にのみインストールされ、フレームワークによって読み込まれるのではなくdabt scanのみで使用される。
ドキュメント、テスト、ステータス
ドキュメントにはAPIリファレンスとツアー、初めてのアプリと初めてのプラグインのための初心者向けチュートリアル、マークアップ、ウィジェット、プラグイン、入力バインディング、インストール/更新、コールバック/ビューポートのガイド、設計ノートが含まれる。テストはbatsを使用する。付属のVS Code拡張機能(DABT Tools)はインラインヒント、テーマ対応スウォッチ付きのclass=補完、必須属性マーカーを提供する。別途、DABT File Explorerアプリが完全な例として挙げられている。プロジェクトはMITライセンスであり、READMEには十分に成熟するまで現在はコントリビューションを受け付けていないと記載されている。
Comments
0 people shared their preference · Deer Point appears after 10 participants
Sign in to join the discussion.