本文へスキップ

プロジェクト構成

Go プロジェクトは、アプリケーションコードを Go モジュールに置き、開発コマンドは小さな Bun パッケージにまとめます。

#生成されるファイル

my-app/
├── resources/
│   └── icon.png
├── main.go
├── go.mod
├── go.sum
├── quickgui.config.ts
├── package.json
└── README.md

依存関係を解決したら go.sum をコミットしてください。大きなアプリは通常の Go パッケージに分割します。

#アプリケーションのエントリ

main.go は native.Run を開始し、ウィンドウを開きます。コンポーネントは *ui.Element を返す関数です。構築した UI を返してください。ビューを作って無視してはいけません。

func Hello() *ui.Element {
	return ui.View().Padding(20).Gap(12).Children(
		ui.Text("Hello from Go"),
		ui.Button().Child("Continue").OnClick(func() {}),
	)
}

#設定

entry はビルドする Go パッケージです。設定ファイルは CLI 用であり、実行中のアプリは読み込みません。

import { defineConfig } from "@quickgui/cli";

export default defineConfig({
  name: "My App",
  identifier: "com.example.my-app",
  entry: ".",
});

代わりに quickgui.toml も使えます:

name = "My App"
identifier = "com.example.my-app"
entry = "."

CLI は quickgui.config.ts より先に quickgui.toml を読みます。ファイルを指定するには --config configs/dev.toml を渡します。バージョン値は引用符で囲んでください。例: version = "..."。

アプリアイコンは resources/icon.png です。追加ファイルは resources に列挙できます。カスタムフォントは fonts で同梱します。アプリアイコンとバンドルするリソースを参照してください。

export default defineConfig({
  name: "My App",
  identifier: "com.example.my-app",
  entry: ".",
  fonts: ["assets/MyFont.ttf"],
});

#パッケージ

  • github.com/egoist/quickgui/go/native — ウィンドウとプラットフォーム API
  • github.com/egoist/quickgui/go/ui — コンポーネントとスタイル
  • github.com/egoist/quickgui/go/reactive — 高度なコードで使う owner と context

@quickgui/cli は開発依存です。独自のコンポーネントを共有するには、拡張の作成を参照してください。

#ローカル開発

quickgui dev
quickgui fmt
quickgui check
quickgui build

dev は Go のソースまたは設定ファイルを変更すると再読み込みします。