2019, Go GUI 项目爆发的一年?

2019-05-19 01:44:49 +08:00
 liulaomo

目前 Go 语言主要活跃在区块链、云计算、命令行工具和后端服务等领域。这些领域基本上和 GUI 关系不大。近来出现了很多跨平台的 Go GUI 项目。虽说用井喷之势形容有些过了,但是的确有加速的迹象。难道 Go 语言将要开辟出另一大块疆土?

忙中偷闲,整理了一份目前 GUI/图形 /图像相关的 Go 项目列表。见下。欢迎补充。

原生 GUI 绑定

dlgs是一个跨平台的显示对话框和输入框的 Go 代码库。

glfw是一个 GLFW3 绑定库。

go-mobile支持移动平台应用开发( Android 和 iOS )。(其中包含OpenGL ES 2.0 和 ES 3.0 绑定库。)

go-sdl2是一个 SDL2 绑定库。

go-gtk是一个 GTK2 绑定库。

gotk3是一个 GTK+3 绑定库。

GXUI,Google 员工出品,但已经停止维护很久了。

qt是一个 qt 绑定库。

shiny是一个跨平台的 UI 库。貌似荒废了。

systray是一个跨平台的系统托盘通知图表和菜单库。

trayhost是另一个跨平台的系统托盘通知图表和菜单库。

ui提供了原生 GUI 绑定。

Walk是一个"Windows Application Library Kit"绑定。

w32.go是一段使用 Windows 系统调用生成 GUI 的小例子。

XGB是一个 X 系统绑定。

xgbutil是一个 X 系统绑定工具库。

基于 HTML 的 GUI

go-astilectron基于 Electron,使用 HTML/JS/CSS 来构建跨平台 GUI 应用。

go-sciter是一个 Sciter 绑定。

gowd基于 nwjs,使用 HTML/JS/CSS 来构建跨平台 GUI 应用。

Wails另用原生浏览器,使用 HTML/JS/CSS 来构建跨平台 GUI 应用。

webview基于 WebKit,使用 HTML/JS/CSS 来构建跨平台 GUI 应用。

非原生 GUI

duit是一个纯 Go 跨平台 UI 库。

Fyne使用 OpenGL 实现立即模式跨平台 GUI。

gi是一个基于场景图的 2D 和 3D GUI 库。

Gio是一个轻便的立即模式跨平台 GUI。支持:iOS/tvOS, Android, Linux (Wayland), macOS, Windows 和 browsers (Webassembly/WebGL)。

go-flutter实现了 Flutter Embedding API。

goey(这个的介绍没看太明白,各位自个儿研究一下。)

gui是一个并发 GUI 库。

imgui-go是一个 Dear ImGui 绑定炉。

nk是一个 nuklear 绑定库。(另一个:nucular

3D 图形 API 绑定

d3d9是一个 Direct3D9 绑定。

gl是一个 OpenGL 绑定。(另外GLHF对 gl3.3 进行了更接近于 Go 风格的包装。)

vulkan是一个 Vulkan 绑定。

2D 矢量图形库

gg是一个纯 Go 矢量图形库。

go-cairo是一个 cairo 绑定。

go-skia是一个 skia 绑定。

svgo用来生成 SVG 1.1 规范的 svg 文件。

字体处理相关

freetype是一个 Freetype 字体渲染器光栅化 Go 库。

pixfont是一个位图字体库。

游戏开发相关

请访问Awesome Go获取列表。

图像处理相关

image标准库。

官方image补充库。

请访问Awesome Go活度更多。


本文首发在微信Go 101公众号,欢迎各位转载本文。Go 101公众号将尽量在每个工作日发表一篇原创短文,有意关注者请扫描下面的二维码。

12178 次点击
所在节点    Go 编程语言
19 条回复
HarveyLiu
2019-05-19 03:02:51 +08:00
很多项目需要重构,服务器硬件也在更新,跨平台完美的 gui 库,目前还没有吧,简单界面还是可以的,另外时间学习新的 gui 库,成本也不小,不 95%完美兼容成熟的情况下没人花这个学习成本吧?单线程最强的语言还是 Nim 吧😄
congeec
2019-05-19 05:18:04 +08:00
看应用,而不是库
hotsymbol
2019-05-19 09:22:07 +08:00
好几年前就有了。
LSvKing
2019-05-19 09:45:43 +08:00
没有一个具备高可用完整性的
loading
2019-05-19 09:56:46 +08:00
这些库和月球表面差不多,全是坑。
chenhui7373
2019-05-19 10:00:55 +08:00
gopherjs

go 绑定 qt
go 绑定 flutter

GoSX 模仿 JSX,反正都要编译了 ...
file0X0088
2019-05-19 10:14:09 +08:00
GOlang 不需要 UI
Yourshell
2019-05-19 10:42:42 +08:00
看到最后二维码就明白了
p1gd0g
2019-05-19 10:59:43 +08:00
之前用 andlabs 写啦个七牛客户端,图像性能有点差,能看到拖拽。
包括官方示例有能看到拖拽。
hanxiV2EX
2019-05-19 11:09:19 +08:00
一个 system tray 开启后台,用 rest api 把接口交给浏览器。
liulaomo
2019-05-19 12:01:01 +08:00
@hotsymbol geoy, guo, go-skia 都是近两三个月出的
nicevar
2019-05-19 12:04:14 +08:00
目前这些真的没一个能真正用得上的,现阶段适合写个 hello world 的窗体, 这方面感觉 flutter 比较有优势,达到 Qt 的成熟度还要很多年
liulaomo
2019-05-19 12:14:31 +08:00
@p1gd0g 项目地址有吗?
JohnLou
2019-05-19 12:15:56 +08:00
说得好,我用 flutter
liulaomo
2019-05-19 12:34:33 +08:00
@LSvKing 好几个绑定都是相当成熟的,包括 qt, sdl, glfw, gtk2, imgui, nuklear
p1gd0g
2019-05-19 19:29:20 +08:00
@liulaomo https://github.com/p1gd0g/QiniuDrive

很水,应届毕业生为啦找工作临时写的。
liulaomo
2019-05-19 23:28:09 +08:00
@p1gd0g 看代码还是相当有水准的。要是个库的话,这篇文章就准备收录的
wsseo
2019-05-20 00:53:28 +08:00
哪个比较成熟
wenzhoou
2019-05-20 07:50:45 +08:00
我觉得最好的实践还是起 Web 服务。然后打开浏览器。参考 go 的帮助文档的做法。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/565455

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX