Show HN: Shirei, 用原生Go编写的跨平台GUI框架

Hacker News Top 工具

摘要

Shirei是一个为Go语言设计的跨平台GUI框架,采用即时模式API,支持在MacOS、Windows和Linux上生成原生可执行文件,无需外部依赖。

暂无内容
查看原文
查看缓存全文

缓存时间: 2026/07/12 19:50

hasenj/go-shirei

来源:https://github.com/hasenj/go-shirei

Shirei

Shirei 是一个跨平台 GUI 框架,适用于 Go。你可以用 Go 来编写用户界面,而不是 HTML 和 JavaScript。

真正跨平台:同一套代码能够在 MacOS、Windows 和 Linux 上生成外观完全一致的程序。同时,它也是为 Linux 构建不依赖任何外部库的独立 GUI 程序的最简单方式。

※ “Shirei” 来源于 “Simple Layout”(シンプル・レイアウト)的日语读音:シンプル・レイアウト → シレイ

haystack

动机

经验告诉我们,即时模式 API 是编写 GUI 应用程序唯一合理的方式。遗憾的是,目前没有一个好用且开箱即用的库或框架。有些要求你实现自己的后端,有些在跨平台支持上不够完善,还有一些对非拉丁文字的支持不够充分。

“即时模式”的关键是什么?是 UI 每帧都重新渲染所有内容吗?不是。关键在于:你只需根据数据(或主要根据数据)描述每一帧 UI 应该长什么样,就能构建出 UI。

这就是 React 胜出的原因:无需自己维护 UI 小部件,无需跟踪它们的状态来更新它们。你只需说:“在此时刻,我想要一个按钮在这里,按钮上的标签显示某某文字,当按钮被点击时,我想要执行某些操作。”

这个按钮以前存在吗?当你不再需要它时,它会发生什么?

永远不需要回答这些问题。这是 React 最棒的地方,也是“即时模式”的真正含义。

如果你有一个 API 只允许你“绘制”东西,但还需要你自己维护所有“绘制”对象的状态,那就没什么意义。

process monitor

特性

  • 原生:真正的可执行程序,不是网页。典型二进制文件大小 ≈10MB。

  • 真正的即时模式 API:你永远不需要维护 UI 小部件,也无需将数据与小部件状态同步。

  • 开箱即用:不仅仅是一个布局引擎,而是一个完整的框架,无需任何样板代码即可立即使用。

  • 对国际化文本的完整支持:复杂字形塑造、双向排版、系统字体访问、东亚语言的 IME(输入法编辑器)支持。

  • 灵活的布局与样式:Web 的优势之一在于 UI 布局极其灵活;你不必局限于一组标准的小部件和容器。你可以自己创建。

  • 易于学习的 API,无论是人类还是 AI 代理都能轻松上手。如果你有一些小型程序创意但没时间实现,不妨让最新的 AI 引擎使用 shirei 来构建它。你会惊讶于它们的使用效果。

examples/ 目录下有几个示例程序 —— 如果只看一个,请从 haystack 开始。

快速开始

将以下内容复制到新文件夹的 main.go 文件中:

package main

import (
	"fmt"

	app "go.hasen.dev/shirei/app"

	. "go.hasen.dev/shirei"
	. "go.hasen.dev/shirei/widgets"
)

func main() {
	app.SetupWindow("我的应用", 300, 100)
	app.Run(RootView)
}

var count int

func RootView() {
	Container(Attrs(Viewport, Background(220, 10, 97, 1)), func() {
		Container(Attrs(Row, CrossMid, Pad(20), Gap(10)), func() {
			Label(fmt.Sprintf("计数器: %d", count))
			if Button(SymIPlus, "递增") {
				count++
			}
		})
	})
}

然后运行:

$ go mod init main
$ go mod tidy
$ go run .

学习

相似文章

Gooey:面向 Zig 的 GPU 加速 UI 框架

Hacker News Top

Gooey 是一个面向 Zig 的 GPU 加速 UI 框架,通过 Metal、Vulkan/Wayland 和 WebGPU/WASM 支持 macOS、Linux 和浏览器。它提供声明式 UI、动画、主题、无障碍和零外部依赖。

Show HN: Davit,一个 Apple Containers 界面

Hacker News Top

Davit 是一个免费、开源的 macOS 原生应用,使用 SwiftUI 构建,为 Apple silicon 上的 Apple 容器平台提供用户界面,允许用户无需 Docker Desktop 即可运行 Linux 容器。