MujicaUI
宫廷哥特风格的 Go 桌面组件库,建立在 MyGo 原生 UI 之上。象牙白与炭黑底色,酒红主色,旧金装饰线,衬线标题。100 个组件,浅深两套主题,三种密度。
界面由 MyGo 在 GPU 上自绘,不使用 HTML、JavaScript 或 WebView。
安装
go get github.com/ZacharyZhang-NY/MujicaUI要求 Go 1.27.1 与 MyGo v0.2.10(见 兼容表)。
最小示例
即 examples/minimal/main.go,CI 校验两者一致。
package main
import (
"log"
"github.com/egoist/mygo"
"github.com/egoist/mygo/ui"
"github.com/ZacharyZhang-NY/MujicaUI/core"
"github.com/ZacharyZhang-NY/MujicaUI/input"
)
type app struct{ name string }
func (a *app) view(c *ui.Context) {
core.Use(c, core.Settings{Locale: core.ZhCN})
ui.Column(c).Fill().Center().Gap(12).Children(func() {
input.TextInput(c, &a.name, input.TextInputOptions{Placeholder: "姓名"})
if input.Button(c, "觐见", input.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)
}
}主题
每帧开头调用 core.Use(c, settings)。Settings 决定模式(System、Light、Dark)、密度(theme.Compact、theme.Default、theme.Comfortable)、语言与文案覆盖。每个窗口各自设置,切换不重置业务状态。
core.Use(c, core.Settings{
Mode: core.Dark,
Density: theme.Compact,
Locale: core.ZhCN,
})
k := core.Tokens(c) // 当前窗口的颜色覆盖顺序:组件参数,窗口 Settings,库默认值。系统高对比度、文本缩放、减少动画始终生效。
Gallery
go run ./examples/gallery # 原生窗口
go run ./examples/gallery -web 127.0.0.1:8080 # 浏览器镜像,仅本机-web 按传入的地址监听;写 :8080 会对所有网络接口开放。浏览器镜像不在浏览器里运行组件。Go 进程用 ui.NewTester 驱动同一个 Gallery 视图,把帧推给页面,再把指针、键盘、输入法和剪贴板事件送回 Go。
文档
许可
MIT。第三方声明见 THIRD_PARTY_NOTICES.md。