はじめに
#動作要件
- macOS 14 以降
- Go 1.23 以降
- Bun 1.4 以降
- Xcode Command Line Tools(
xcode-select --install)
現在サポートしている対象は macOS です。
#プロジェクトを作成
bunx @quickgui/cli init my-app --language go
cd my-app
quickgui devinit はプロジェクトを作成し、依存関係をインストールします。--language を省略すると、Go、TypeScript、Rust を対話的に選べます。
#最初のウィンドウ
main.go は native.Run でアプリを起動し、ウィンドウを開きます。コンポーネント関数を WindowOptions.Component に渡します。コンポーネントはそのウィンドウの UI を返します。
package main
import (
"log"
"github.com/egoist/quickgui/go/native"
"github.com/egoist/quickgui/go/ui"
)
func Counter() *ui.Element {
count, setCount := ui.CreateSignal(0)
return ui.View().
FlexCol().
SizeFull().
ItemsCenter().
JustifyCenter().
Gap(20).
Bg("#090d16").
TextColor("#e2e8f0").
Child(ui.Text("Count: ", count()).FontSize(28).FontWeight(700)).
Child(ui.Button().
OnClick(func() { setCount(count() + 1) }).
Padding(12).
RoundedLg().
Bg("#2563eb").
Hover(func(s ui.StyleBuilder) ui.StyleBuilder { return s.BackgroundColor("#3b82f6") }).
Child("Increment"))
}
func main() {
if err := native.Run(func() {
open := func() {
native.NewWindow(native.WindowOptions{
Title: "My App",
Width: 720,
Height: 480,
Component: Counter,
})
}
native.App.OnReopen(func(event native.ReopenEvent) {
if !event.HasVisibleWindows {
open()
}
})
open()
}); err != nil {
log.Fatal(err)
}
}Dock アイコンをクリックしたときに表示中のウィンドウがなければ、OnReopen がウィンドウを開き直します。
#実行とビルド
quickgui dev
quickgui fmt
quickgui check
quickgui builddev は Go コードを再ビルドしてアプリを再起動します。fmt は長い UI 呼び出しを折り返します。build はパッケージ済みアプリを dist/ に書き出します。
#次のステップ
- コンポーネントを書く。
- シグナルで同期を保つ。
- スタイルとレイアウトを追加する。
