Go GUI Awesome
选择逻辑
- fyne - 如果限制能满足
- libui - 如果不需要基于 web 的界面
- 打开 本地浏览器 - 使用 tray
- sciter - 集成浏览器,基础 web 功能
- walk - 如果只需支持 windows 且界面简单
- go-astilectron - 完整 web 功能 + 扩展
Note
- macOS 要求在主线程操作 GUI - 多个 UI 库无法同时使用
Native
- https://pkg.go.dev/golang.org/x/exp/shiny
- fyne-io/fyne
- #283 - tray 支持
- OpenGL 2.0+
- 需要有显卡
- gio
Immediate mode GUI programs in Go for Android, iOS, macOS, Linux, FreeBSD, OpenBSD, Windows, and WebAssembly
- used by Tailscale
- gioui/gio
- immediate mode user interfaces
Binding
- therecipe/qt - QT 绑定
- Go, JavaScript/TypeScript, Dart/Flutter, Haxe, Swift
- andlabs/ui
- andlabs/libui 的 Go 绑定
- gotk3/gotk3
- mattn/go-gtk - 不活跃
- ying32/govcl
Webview
- wailsapp/wails
- webview/webview - 基于本地浏览器
- 依赖 DLL
- #366 - Embed DLLs?
- 依赖 DLL
- asticode/go-astilectron - 基于 Electron
- Go binding asticode/astilectron - Electron API over TCP
- sciter-sdk/go-sciter
- 嵌入式 HTML/CSS/Script 引擎 - 不依赖浏览器
- 目前只允许动态链接 - 8-15 MB
Windows
- lxn/walk - Windows Application Library Kit
Keyboard
- micmonay/keybd_event - simulates the key press on a keyboard
Toolkit
- sqweek/dialog cross-platform dialog API for go-lang
- pkg/browser - 打开浏览器
- getlantern/systray
- 跨平台 tray
- 问题
- Quit 会退出程序而不是退出 loop
- 主 Loop 会一直运行,无法退出
- zserge/tray
- C 语言跨平台 tray
Misc
- fogleman/gg 2D rendering in Go
Game
- hajimehoshi/ebiten
2D game library
- Apache-2.0
- faiface/pixel
hand-crafted 2D game library
- MIT
- EngoEngine/engo is an open-source 2D game engine written in Go.
- azul3d/engine 3D game engine written in Go!
- https://go-talks.appspot.com/github.com/guregu/slides/comiket/comiket.slide
- g3n/engine
- Go 3D Game Engine
- oakmound/oak
- pure Go game engine
Mobile
- golang/mobile Golang mobile support cross-platform gl binding