轻量桌面应用。 用 Go 构建。

GOUI 是轻量、现代的 Go GUI 框架,支持 Windows、macOS 和 Linux。No cgo · MIT。

GOUI Demo 展示原生控件、现代样式和侧栏,运行于 Windows
Windows
GOUI Demo 展示原生控件、现代样式和侧栏,运行于 macOS
macOS
GOUI Demo 展示原生控件、现代样式和侧栏,运行于 Linux
Linux

一个桌面工具包,而不是一套 Web 技术栈。

复用 Go 工具链,嵌入资源,交付专注于业务的原生应用。GOUI 提供桌面界面需要的能力,不把自己扩展成无所不包的平台 SDK。

熟悉的工具链

使用 CGO_ENABLED=0 构建。原生 API 在运行时绑定,构建应用无需 C/C++ 编译器或开发头文件。

一个二进制,就是一个应用

Windows 和 Linux 可以直接运行单个可执行文件;macOS 可以包装为 .app,承载应用身份、图标和签名。运行时仍需原生系统库。

现代外观,原生根基

亮暗样式和主题色,配合原生窗口、文字排版、输入法、剪贴板和文件对话框。声明式 View 和命令式 Widget 按需选择。

几行代码,一个窗口。

窗口就是普通的 Go 值。这是一个完整应用——先运行起来,再按需生长。

go get github.com/golang-gui/goui@v0.4.0
查看完整入门教程
main.go
package main

import "github.com/golang-gui/goui/ui"

func main() {
	ui.Run("org.golang-gui.hello", func(app ui.App) ui.RootView {
		return ui.Window("main").
			Title("Hello World").
			Content(ui.Label("Hello GOUI!"))
	})
}

为 AI 辅助开发而准备。

GOUI 提供官方 Skill 供编码助手安装,把运行中的窗口发布为纯文本模型可读的语义快照,并可通过可选的本地自动化协议接收真实输入。

Prompt
请按照 https://github.com/golang-gui/goui/blob/main/skills/INSTALL.md 的说明,安装 GOUI 应用开发 Skill。

一句话安装 Skill

官方 goui-app 技能遵循 Agent Skills 格式:向编码工具发送一条安装指令,即可获得 GOUI 应用开发指引。工具是否加载 Skill,由工具自身决定。 安装说明

纯文本的语义信息

每个窗口都发布语义快照——角色、文本、边界、焦点、支持的操作——以纯文本模型可读的 JSON 呈现,理解界面不依赖视觉能力。 在 Demo 中查看

走真实输入的自动化

可选的本地 gui/dev 服务让智能体读取快照、分发指针与按键事件、按正常输入路径提交文本。它需要显式 import 和 GOUI_DEV_ADDR 才会启用,不会进入发布二进制。 协议说明

体验Demo

Demo 集中展示文本编辑、数据视图、可拖出标签、覆盖层、绘图和系统集成。v0.4.0 增加菜单按钮组、工具提示和大文本样本,可以切换亮暗模式、主题色和八种界面语言。

macOS

Apple Silicon · .app ZIP

3.33 MiB 已发布资源大小

下载 Demo

Linux:先用 chmod +x 为文件增加执行权限。macOS:解压 ZIP 后打开 GOUI Demo.app;该应用已完成 Developer ID 签名与 Apple 公证。ZIP 大小不等于可执行文件大小。

SHA-256 校验和v0.4.0 · 发布说明发布于 2026-10-26

简洁,不等于简陋。

GOUI 提供小型桌面应用所需的基础机制和控件,从实用工具、便签应用,到以数据为中心的工作区。

日常控件

按钮、标签、图标、菜单与菜单按钮组、工具提示、下拉列表、复选与单选、开关,以及长条形和圆形进度指示。

原生编辑体验

Unicode 文本编辑、中日韩输入法、选区、撤销重做、剪贴板、快捷键和 Tab 焦点导航;长段落采用有界原生排版窗口。

数据与灵活布局

约束布局、线性与换行容器、滚动、覆盖层、分割视图、虚拟列表、树,以及支持自定义单元格的表格。

多窗口工作区

标签排序、跨窗口转移、拖出新建窗口,以及原生应用内和跨应用拖放。

绘图与外观

跟随样式的 SVG 图标、亮暗模式、主题色、HiDPI、透明、阴影,以及帧驱动动画。

系统与开发工具

文件对话框、文件访问凭据、计时器、系统设置、链接与文件打开、构建工具,以及可选的语义界面检查。

只使用你需要的层。

吸取 GTK4、Flutter、Qt、Avalonia 和 SwiftUI 的经验,再按 Go 的方式组织,而不是照搬。

ui
声明式 View、内容组合与显式更新协调
gui
控件、布局、绘制、事件、焦点和信号
platform
原生窗口、输入、绘图与文字排版

三个桌面平台,明确的运行条件。

no-cgo 描述构建方式,不意味着程序没有运行时依赖。

Windows

Windows x64 · Win32 窗口 · DirectWrite 排版 · Direct2D、OpenGL 或 Software 绘制。

macOS

macOS Apple Silicon · AppKit 窗口 · Core Text 排版 · OpenGL 或 Software 绘制。签名与公证仍属于应用分发步骤。

Linux

Linux x64 · X11 · Pango/Cairo 排版 · OpenGL 或 Software 绘制。需要 X11、GL、GLib、Fontconfig、Pango/Cairo 和 GTK 运行库;Wayland 会话需 XWayland,并在目标桌面验证具体行为。

v0.4.0 的公共 API 仍在演进。后续继续推进触摸、更多平台与窗口系统、用途控件,以及有实测依据的性能优化。

几个值得了解的问题。

GOUI 是 Web 套壳吗?

不是。GOUI 通过原生绘图后端绘制控件,并使用原生文字排版,不嵌入浏览器引擎。

需要 GCC 或 cgo 吗?

构建应用不需要 C/C++ 编译器。GOUI 支持 CGO_ENABLED=0,在运行时绑定原生库;运行库要求仍然存在。

可以交叉编译吗?

支持的目标可以用 Go 工具链无 cgo 构建。打包、签名和真机验证是独立步骤;编译通过不代表原生行为已经验证。

v0.4.0 的全部 API 都稳定了吗?

还没有。当前版本用于开发应用并获得实践反馈,公共 API 会继续演进。建议固定版本,升级时查看变更。

AI 智能体能读取并操作我的 GOUI 应用吗?

可以,三部分配合:安装官方 goui-app Skill 获得开发指引;以纯文本读取语义快照了解界面状态;可选启用本地 gui/dev 服务,通过快照、事件和文本接口走真实输入分发完成操作。自动化只存在于开发构建,不会随应用发布。

让应用,继续用 Go。

从一个小窗口开始,再使用应用真正需要的层和控件。

快速开始