发现 autohotkey 这东西把 Go 写的命令行包装成 GUI 真是神器

2025 年 9 月 23 日
 wojiugaiming

自己用 Go 语言写了一个命令行,感觉老是终端调用很麻烦,就想着包装成图形界面,后面看了以下 Go 语言有什么 Gui 框架

以前试过 Godot+Go 语言写界面,那界面叫一个粗糙,中途也尝试过 aardio+Go 语言方式,老是出错,没耐心放弃了

现在看了一下有:Fyne 、Walk 、GioUi 、wails , wails 还要会前端,我不会。。。。 Walk 不用会前端,好像很久没更新,放弃 Fyne 、GioUi 这两个可以开发 win 、linux 、mac 、安卓、ios ,还可以,后面弄了一下,各种出错

一来火,谷歌狂找替代,发现 autohotkey 这东西还不错,就想看这东西能不能调用我的命令行,包装成界面,并且编译成 exe ,发现还可以哟。 594Kb 这打包成 exe 才 1.3M ,运行后占用内存 2.5M ,Upx 压缩一下后,exe 占用 594kb ,妙啊

后面信心大涨,学着用 GioUi 重写,自己不够聪明各种报错,放弃。学着用 fyne 重写界面调用命令行,编译后 23Mb ,Upx 压缩后 8.61Mb ,运行占用内存 181.1Mb ,我天

还是写成命令行+authotkey 这种香,

有像我这样的兄弟吗?还有更骚的操作推荐吗?推荐一下,大家一起学习一下

4692 次点击
所在节点    程序员
28 条回复
wojiugaiming
2025 年 9 月 25 日
@Luckykeeper 另外请教一下,Flutter + Go 交互是不是就 go 开启 web 服务,flutter 进行请求,如果这样感觉不是很完美
blankmiss
2025 年 9 月 25 日
为什么不用 wails
Luckykeeper
2025 年 9 月 25 日
@itakeman #21 我是 Go 开 web 服务,Flutter 去请求做的,因为我这边写的小工具需要在没有装 Docker 的情况下去操作 Docker 镜像(多架构镜像复制/单架构镜像 pull & push )去实现 k8s 应用的离线升级,您说的也有道理,如果在没有特殊需求的时候不是很完美,因为用户使用的时候他需要去开两个应用,为了缓解这个问题,能让他只打开一个应用就使用,我这里提供两个思路,不过还没实践过

1 、参考 [微力同步] 的实现方式,不过换成 Go + Flutter ,Flutter 打 web 包,Go 的项目隐藏掉 Console ,托盘里面挂个 icon ,然后可以呼出浏览器打开你的 Flutter 项目,在 WEB 上交互,这个不开源,但是可以下载下来体验下,移动端和桌面端都有
2 、GitHub 上有这么个项目 [ComicSparks/pikapika] (好像迁移了,我印象里面之前是挂在 niuhuan 这个号下面的),我第一次知道 Flutter 就是从他这里知道的,不过这个项目并不是完全开源,可以看下他项目 Readme 的 [Technology Stack => Multi-platform adaptation] 这部分,他的桌面端是 go-flutter ,移动端是 gomobile 然后 flutter 去调,使用起来体验非常好,可以下个他的 Release 包试试效果
wojiugaiming
2025 年 9 月 25 日
@blankmiss 不会写 js 、web 那一套
wanjun
2025 年 9 月 25 日
fyne 写过,打包后 8M ,运行后占内存 23M
wojiugaiming
2025 年 9 月 25 日
@wanjun 你这个是怎么优化的?
icelei
2025 年 9 月 26 日
AHK 只能在 win 下跑,想在 mac 或者 linux 下就没办法了
wanjun
2025 年 10 月 3 日
@itakeman 没任何优化,可能是因为功能简单

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

https://v2ex.ih06.com/t/1161366

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

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

© 2021 V2EX