v0.23.0
https://github.com/ratatui/ratatui/releases/tag/v0.23.0
すべてを冷却する
すでにクールな名前とロゴがありましたが、今ではクールな説明もあります。
ratatui: A Rust library to build rich terminal user interfaces or dashboards.ratatui: A Rust library that's all about cooking up terminal user interfaces.
また、 tui-rs-revival
から ratatui
に組織を変更しました。
Barchart: 水平バー
これで、 Barchart
ウィジェットのバーを水平にレンダリングできるようになりました。これは、利用可能なスペースをより効率的に使用するために特に役立ちます。
水平バーをレンダリングするために Direction
属性を使用するだけです。
let mut barchart = BarChart::default() .block(Block::default().title("Data1").borders(Borders::ALL)) .bar_width(1) .group_gap(1) .bar_gap(0) .direction(Direction::Horizontal);
Barchart
ウィジェットでできることの例は次のとおりです (水平バーについては右下を参照) :
Sixel の自発的なスキップ機能
Sixel は、ターミナルでサポートされているビットマップ グラフィック形式です。 「Sixel モード」に入るには、シーケンス
ESC+Pq
を送信します。「文字列ターミネータ」シーケンスESC+\
は、モードを終了します。
Cell
ウィジェットに、バッファを画面にコピー (差分) するときにセルをスキップできる set_skip
メソッドが追加されました。これは、Sixel、iTerm、Kitty などのターミナル グラフィックス プロトコルからの画像で覆われたセルをバッファが上書きしないようにする必要がある場合に役立ちます。
詳細については、プル リクエストを参照してください: https://github.com/ratatui/ratatui/pull/215
このコンテキストでは、実験的な画像レンダリング クレートも存在します: ratatui-image
テーブル/リスト: ハイライト間隔
Table
および List
ウィジェットに HighlightSpacing
という新しいプロパティを追加しました。これは、highlight_spacing
関数を呼び出すことでオプションで設定できます。
このオプションが利用可能になる前は、以前に行が選択されていなかったときにテーブル内の行を選択すると、最初の列の先頭にある「ハイライト シンボル」の幅が追加され、テーブルのレイアウトが変更されました (選択解除の場合も同様です)。この新しく追加されたオプションを使用して、この動作を構成可能にしたいというのが私たちの考えです。
let list = List::new(items) .highlight_symbol(">>") .highlight_spacing(HighlightSpacing::Always);
現在、3つのバリエーションがあります。
Always
: 選択シンボル列に常にスペースを追加します。WhenSelected
: 行が選択されている場合にのみ、選択シンボル列にスペースを追加します。Never
: 何かが選択されているかどうかに関係なく、選択シンボル列にスペースを追加しません。
Table: ライン配置のサポート
let table = Table::new(vec![ Row::new(vec![Line::from("Left").alignment(Alignment::Left)]), Row::new(vec![Line::from("Center").alignment(Alignment::Center)]), Row::new(vec![Line::from("Right").alignment(Alignment::Right)]), ]) .widths(&[Constraint::Percentage(100)]);
Now results in:
Left Center Right
スクロールバー: オプションのトラックシンボル
Scrollbar
のトラックシンボルはオプションになり、他のウィジェットと構成を簡素化します。また、特別なブロック文字を持つブロックで Scrollbar
をタンデムで簡単に使用することができます。
変化の1つは、 track_symbol
を次の方法で設定する必要があることです。
let scrollbar = Scrollbar::default().track_symbol("-");let scrollbar = Scrollbar::default().track_symbol(Some("-"));
また、複数の異なるトラックシンボルで構成されたカスタムトラックをレンダリングすることもできます。
symbols::scrollbar
module
シンボルとセットは widgets::scrollbar
から symbols::scrollbar
に移動されました。これにより、他のシンボル セットとの一貫性が保たれます。また、scrollbar
モジュールを非公開にしました。
これは重大な変更であるため、コードを更新して ratatui::symbols::scrollbar::*
(または必要な特定のシンボル) のインポートを追加する必要があります。
アルファリリース
アルファ リリース (つまりプレリリース) は *毎週土曜日* に作成され、この GitHub Actions ワークフロー の助けを借りて自動化されます。
これは、安定リリースに到達する前に ratatui
をテストしたり、不安定な機能や実験的な機能を使用したりする場合に特に便利です。
バージョン管理スキームは v<version>-alpha.<num>
です。例:
v0.22.1-alpha.2
また、アルファリリースとドキュメントのコンテキストでの貢献については、次の問題を参照してください: https://github.com/ratatui/ratatui/issues/412
Example GIFs
examples/
ディレクトリに各例の GIF を追加し、プレビュー用に README.md
を追加しました。
これにより、各例を実行せずに、その内容を簡単に確認できるようになります。
参照: https://github.com/ratatui/ratatui/blob/main/examples/README.md
ここで注目すべき点は、一連の手順から GIF を生成するために vhs を使用したことです。例:
# This is a vhs script. See https://github.com/charmbracelet/vhs for more info.# To run this script, install vhs and run `vhs ./examples/demo.tape`Output "target/demo.gif"Set Theme "OceanicMaterial"Set Width 1200Set Height 1200Set PlaybackSpeed 0.5HideType "cargo run --example demo"EnterSleep 2sShowSleep 1sDown@1s 12RightSleep 4sRightSleep 4s
結果:
これらの GIF は https://vhs.charm.sh でもホストしていますが、すべてを GitHub に移行すると問題が発生します。これに関して貢献することに興味がある場合は、https://github.com/ratatui/ratatui/issues/401 を参照してください。
一般的な特徴
strum クレートを利用して、列挙型に Display
と FromStr
の実装を追加しました。
また、可能な場合は、Debug
、Default
、Clone
、Copy
、Eq
、PartialEq
、
Ord
、PartialOrd
、Hash
などの一般的なtrait を構造体/列挙型に実装しました。
テストカバレッジ🧪
ratatui
は 90% test coverage を持っています!
さまざまなウィジェットのテスト/ベンチマークを追加したすべての人に叫びました。
No unsafe ⚠️
現在、ratatui
では unsafe code が 禁止 されています。
また、最適化の目的で unsafe
コードを使用することについての過去の このディスカッション も参照してください。
本📕
より詳細な ratatui
ドキュメントと使用例のために本に取り組んでいます。
https://ratatui.rs/で読むことができます。
リポジトリ: https://github.com/ratatui/ratatui-website
その他
- テスト バッファ全体をデシリアライズ/デシリアライズするために、
TestBuffer
の serde 属性を拡張します。 Rect
のサイズを互いに近づけるための弱い制約を追加します。Layout::split
関数を簡素化します。- Barchart、Block、Layout、その他のウィジェットのさまざまなバグ修正と改善。
- さまざまなウィジェットにドキュメントを追加し、既存のドキュメントを改善します。
- 色と修飾子の例を追加します。
- #ratatui:matrix.org に Matrix ブリッジを作成しました。