コンテンツへスキップ
QuickGUI
v0.1.0 crates.io で公開中

変わった部分だけを、描画する。

Rust または TypeScript でネイティブアプリを作る GPU アクセラレーション GUI フレームワーク。見慣れたレイアウト、ちゃんと使えるテキスト、標準のアクセシビリティ——アプリがアイドルなら CPU はゼロ。

はじめる
$cargo add quickgui

デスクトップアプリに必要なもの、ぜんぶ。

アイドル時は CPU ゼロ

画面に変化がなければ、何も動きません。アイドルウィンドウはフレームを描かず、バッテリーも消費しない。

最初から速い

描画は GPU 上で行われ、ウィンドウの変わった部分だけが再描画されます。

見慣れたレイアウト

Flexbox と CSS Grid、Tailwind 風のショートハンド付き。Web ページを組めるなら、ウィンドウも組めます。

コンポーネント同梱

アクセシブルでスタイルなしのコンポーネントを多数同梱——メニュー、ダイアログ、ポップオーバー、select、combobox、タブ、テーブル、ツリー。自由に仕上げられます。

テキストがちゃんと使える

選択、編集、アンドゥ、IME、絵文字、右から左へ書く言語——どのネイティブアプリとも同じ挙動。

標準でアクセシブル

スクリーンリーダーには本物のボタン・リスト・テキストが見えます。追加コードは不要。

どんなサイズでも滑らか

100 万行のテーブルやリストも、フレーム落ちなくスクロール。

本物のネイティブ

本物のウィンドウ、ネイティブメニュー、ダイアログ、トレイアイコン、通知——ブラウザの着ぐるみではありません。

CLI ひとつで開発から配布まで

quickgui dev は編集しながら実行、quickgui build は署名済みでインストール可能なリリースを出力します。

Rust でも、TypeScript でも。

好きな方でどうぞ——どちらも同じネイティブアプリになります。webview はありません。

struct Counter {
    count: usize,
}

impl View for Counter {
    fn render(
        &mut self,
        cx: &mut ViewContext<'_, Self>,
    ) -> impl IntoElement {
        let increment = cx.listener("increment", |this, cx| {
            this.count += 1;
            cx.invalidate();
        });

        div()
            .size_full()
            .flex_col()
            .items_center()
            .justify_center()
            .gap_3()
            .child(text(format!("Count: {}", self.count)))
            .child(
                div()
                    .on_click(increment)
                    .px_4()
                    .py_2()
                    .rounded_lg()
                    .bg(Color::rgb8(24, 24, 27))
                    .text_color(Color::rgb8(250, 250, 250))
                    .hover(|s| s.bg(Color::rgb8(63, 63, 70)))
                    .child("Increment"),
            )
    }
}

1 分ではじめる。

Rust

01

クレートを追加

cargo add quickgui
02

ビューを書く

上のカウンターがそのまま完全な main.rs です——コピーするだけ。

03

実行

cargo run --release

TypeScript · Solid

01

アプリを作成

bunx @quickgui/cli init my-app
cd my-app
bun run dev
02

出荷する

quickgui build --target darwin-arm64 \
  --sign "Developer ID Application: Example (TEAMID)" \
  --notarize quickgui-notary

本物の署名済み・自己完結アプリが手に入ります。インストーラー付き。

macOS利用可能
Windows開発中
Linux開発中

ネイティブなものを作ろう。

ビューを書いて、本物のアプリを出荷——アイドルウィンドウは本当にアイドルに。