# MujicaUI 宫廷哥特风格的 Go 桌面组件库,建立在 [MyGo](https://mygo.egoist.dev/docs/ui) 原生 UI 之上。象牙白与炭黑底色,酒红主色,旧金装饰线,衬线标题。100 个组件,浅深两套主题,三种密度。 界面由 MyGo 在 GPU 上自绘,不使用 HTML、JavaScript 或 WebView。 ## 安装 模块路径暂为 `mujicaui`,尚未发布到代码托管地址。本地使用: ```sh go mod edit -require=mujicaui@v0.0.0 -replace=mujicaui=/path/to/MujicaUI ``` 要求 Go 1.27.1 与 MyGo v0.2.10(见 [兼容表](docs/compat.md))。 ## 最小示例 即 `examples/minimal/main.go`,CI 校验两者一致。 ```go package main import ( "log" "github.com/egoist/mygo" "github.com/egoist/mygo/ui" mujica "mujicaui" ) type app struct{ name string } func (a *app) view(c *ui.Context) { mujica.Use(c, mujica.Settings{Locale: mujica.ZhCN}) ui.Column(c).Fill().Center().Gap(12).Children(func() { mujica.TextInput(c, &a.name, mujica.TextInputOptions{Placeholder: "姓名"}) if mujica.Button(c, "觐见", mujica.ButtonOptions{}).Clicked() { log.Println("hello", a.name) } }) } func main() { a := &app{} mygo.App.WhenReady(func() { mygo.NewWindow(mygo.WindowOptions{Title: "Mujica", Width: 480, Height: 320, Content: ui.View(a.view)}) }) if err := mygo.App.Run(); err != nil { log.Fatal(err) } } ``` ## 主题 每帧开头调用 `mujica.Use(c, settings)`。`Settings` 决定模式(`System`、`Light`、`Dark`)、密度(`theme.Compact`、`theme.Default`、`theme.Comfortable`)、语言与文案覆盖。每个窗口各自设置,切换不重置业务状态。 ```go mujica.Use(c, mujica.Settings{ Mode: mujica.Dark, Density: theme.Compact, Locale: mujica.ZhCN, }) k := mujica.Tokens(c) // 当前窗口的颜色 ``` 覆盖顺序:组件参数,窗口 `Settings`,库默认值。系统高对比度、文本缩放、减少动画始终生效。 ## Gallery ```sh go run ./examples/gallery # 原生窗口 go run ./examples/gallery -web 127.0.0.1:8080 # 浏览器镜像,仅本机 ``` `-web` 按传入的地址监听;写 `:8080` 会对所有网络接口开放。浏览器镜像不在浏览器里运行组件。Go 进程用 `ui.NewTester` 驱动同一个 Gallery 视图,把帧推给页面,再把指针、键盘、输入法和剪贴板事件送回 Go。 ## 文档 - [组件文档](docs/components/):每个组件一页。 - [兼容与平台依赖](docs/compat.md) - [上游归并](docs/upstream.md) ## 许可 MIT。第三方声明见 [THIRD_PARTY_NOTICES.md](THIRD_PARTY_NOTICES.md)。