このプロジェクトについて

Freyaは、Rust向けのクロスプラットフォームでネイティブな宣言型GUIライブラリです。Web技術に依存せず、コンポーネントベースのUIモデルを求めてRustでデスクトップアプリケーションを構築する開発者を対象としています。 コアモデル: コンポーネントは、依存する状態が変化すると再レンダリングされる再利用可能なUI要素です。コンポーネントは内部状態を保持したり、共有状態を購読したりでき、Componentトレイトを実装する任意の型がコンポーネントとして機能します。ルートアプリコンポーネントは単なる関数でも構いません。組み込みの例にはButtonやSwitchがあります。 すぐに使えるコンポーネントは、Button、Switch、Sliderなどの単純なコントロールから、VirtualScrollView、Calendar、ColorPickerなどのより複雑なものまで幅広く揃っています。examplesフォルダ内でcomponent_という接頭辞が付いたサンプルファイルでそれらを確認できます。 READMEで説明されている機能領域: - アニメーション: 色、サイズ、位置のトランジションで、タイミング、イージング、シーケンスを制御できます。 - リッチテキスト編集: カーソル管理、選択、キーボードショートカット、カスタム書式設定、仮想化。 - コードエディタ: テキストにRope、構文ハイライトにtree-sitterを使う状態非依存のエディタ。文法とハイライトクエリは利用者が用意します。code-editorフィーチャーで有効化されます。 - MarkdownViewerコンポーネントによるMarkdownレンダリング(markdownフィーチャー)。 - Routable derive、レイアウト、リンク、ルーターコンテキストによるルーティングとナビゲーション(routerフィーチャー)。 - freya-radioによるグローバル状態管理。コンポーネントがチャネルを購読し、関連するデータが変化したときだけ更新を受け取るチャネルベースのシステムです(radioフィーチャー)。 - アイコンライブラリの統合。現在はLucideをサポートしています。 - freya-testingによるヘッドレステスト。インタラクションをシミュレートし、UI状態をファイルにレンダリングできます。Freya自身が組み込みコンポーネントのテストに使用しています。 - Plottersライブラリによるチャートとプロット(plotersフィーチャー)。 - Fluentローカライゼーションシステムを使った国際化。翻訳、複数形処理、ロケール切り替えに対応します(i18nフィーチャー)。 - リップル効果など、Material Designに着想を得たスタイル修飾子(material-designフィーチャー)。 - ネイティブUIと並べてWebコンテンツを埋め込むWebView統合(webviewフィーチャー)。 - 統合ターミナルやSSHクライアント向けの、PTYサポート付きターミナルエミュレーション(terminal-ptyフィーチャー)。 - コンポーネントツリーをリアルタイムで検査する開発者ツール(devtoolsフィーチャー)。 使用方法: 最新の安定版リリースはfreya = "0.4"として指定し、0.5.0-rc.7のプレリリースとmainブランチのオプションもあります。リポジトリはgitサブモジュールを使用しているため、クローンには--recurse-submodulesが必要か、後でgit submodule update --init --recursiveを実行する必要があります。サンプルはcargo run --example counterで実行できます。開発環境のセットアップガイドはドキュメントからリンクされています。READMEには、Windowsでwindows-gnuを使う場合にコンパイル問題が発生する可能性があると記載されています。 このプロジェクトは、ウェブサイト、docs.rsのドキュメント、Discordサーバー、コントリビューションガイドライン、スポンサーシップページへのリンクを掲載し、Dioxus、rust-skia、その他のコントリビューターにクレジットを付与しています。