Slint は、Rust、C++、JavaScript、または Python で記述された組み込み、デスクトップ、およびモバイル アプリケーション用のネイティブ ユーザー インターフェイスを構築するための宣言型 GUI ツールキットです。
Slintという名前は、次のような設計目標に由来しています。
#MadeWithSlint にアクセスして、Slint を使用したプロジェクトの一部をご覧ください。ぜひ Slint を使用して、そのコミュニティに参加してください。
Slint は現在開発中です。各プラットフォームの対応状況は以下の通りです。
Slint は多くのウィジェットのキーボード ベースのナビゲーションをサポートしており、ユーザー インターフェイスはスケーラブルです。スクリーン リーダーなどの支援技術のための基本的なインフラストラクチャが整備されています。特別なニーズを持つユーザーにクラス最高のサポートを提供するには、さらなる取り組みが必要であることを認識しています。
ラズベリーパイ | STM32 | RP2040 |
---|---|---|
Raspberry Pi 上の Slint のビデオ | STM32 での Slint のビデオ | RP2040のSlintのビデオ |
窓 | macOS | Linux |
---|---|---|
プリンターのデモ | スライドパズル | エネルギーモニター | ウィジェットギャラリー | 気象デモ |
---|---|---|---|---|
サンプルフォルダー内のその他のサンプルとデモ
UI はドメイン固有言語で定義されており、宣言型で使いやすく、直観的であり、グラフィック要素、その配置、その階層、プロパティ バインディング、およびさまざまな状態におけるデータ フローを記述する強力な方法を提供します。
必須の「Hello World」は次のとおりです。
export component HelloWorld inherits Window {
width : 400px ;
height : 400px ;
Text {
y : parent .width / 2 ;
x : parent .x + 200px ;
text : "Hello, world" ;
color : blue ;
}
}
詳細については、Slint 言語ドキュメントを参照してください。
サンプル フォルダーには、Slint マークアップ言語の使用方法と、サポートされているプログラミング言語から Slint ユーザー インターフェイスを操作する方法を示すサンプルとデモが含まれています。
docs
フォルダーには、ビルド手順や内部開発者ドキュメントなど、さらに多くの情報が含まれています。
api
フォルダー内の各言語ディレクトリの README を参照してください。
アプリケーションは、Rust、C++、または JavaScript で記述されたビジネス ロジックと、ネイティブ コードにコンパイルされる.slint
ユーザー インターフェイス デザイン マークアップで構成されます。
.slint
ファイルは事前にコンパイルされます。 .slint
内の式は、コンパイラーが最適化できる純粋な関数です。たとえば、コンパイラはプロパティを「インライン化」し、定数または変更されていないプロパティを削除することを選択できます。将来的には、画像とテキストを前処理することで、ローエンド デバイスでのレンダリング時間を改善したいと考えています。コンパイラは、 Text
またはImage
要素が常に同じ場所にある別のImage
の上にあると判断する可能性があります。その結果、両方の要素を事前に 1 つの要素にレンダリングできるため、レンダリング時間が短縮されます。
コンパイラは、字句解析、解析、最適化、そして最後にコード生成という一般的なコンパイラ フェーズを使用します。ターゲット言語でのコード生成のためのさまざまなバックエンドを提供します。 C++ コード ジェネレーターは C++ ヘッダー ファイルを生成し、Rust ジェネレーターは Rust コードを生成します。動的言語用のインタプリタも含まれています。
ランタイム ライブラリは、 .slint
言語で宣言されたプロパティをサポートするエンジンで構成されます。コンポーネントとその要素、項目、プロパティは単一のメモリ領域にレイアウトされ、メモリ割り当てが削減されます。
レンダリングのバックエンドとスタイルはコンパイル時に構成可能です。
femtovg
レンダラは、レンダリングに OpenGL ES 2.0 を使用します。skia
レンダラは、レンダリングに Skia を使用します。software
レンダラーは、追加の依存関係なしで CPU を使用します。注: Qt がシステムにインストールされている場合、 qt
スタイルが利用可能になり、Qt の QStyle を使用してネイティブな外観のウィジェットを実現します。
.slint ファイルの開発に役立つツールがいくつかあります。
--auto-reload
引数を使用すると、作業中に UI を簡単にプレビューできます (LSP プレビューを使用できない場合)。Slint で適切に動作するようにお気に入りのエディタを設定する方法のヒントについては、エディタの README を参照してください。
Slint は、次のライセンスのいずれかを選択して使用できます。
Web サイトの Slint ライセンス オプションとライセンス FAQ を参照してください。
コード、バグレポート、フィードバックなどの形での貢献を歓迎します。
別のよくある質問をご覧ください。
私たちは、API 設計、クロスプラットフォーム ソフトウェア開発、ユーザー インターフェイス コンポーネントなどのソフトウェアに情熱を持っています。私たちの目標は、Python、JavaScript、C++、Rust の開発者から UI/UX デザイナーまで、誰もがユーザー インターフェイスの開発を楽しめるようにすることです。ソフトウェアは有機的に成長し、ソフトウェアをオープンソースに保つことがその成長を維持する最善の方法であると私たちは信じています。私たちのチームメンバーはドイツの遠隔地にいます。
一般的なチャットや質問については、お気軽に Github ディスカッションに参加してください。 Github の問題を使用して、公開された提案やバグを報告します。
Mattermost インスタンスでチャットしていますので、ぜひ話を聞いたり、質問したりしてください。
もちろん、[email protected] 宛てに電子メールで個人的にご連絡いただくこともできます。