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

2 天前
 itakeman

自己用 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 这种香,

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

2626 次点击
所在节点    程序员
27 条回复
iorilu
2 天前
现在前端都用 ai 写阿, 尤其你把命令行的接口告诉 ai, 很容易整出一个

用 wails, 主要前端比较美观
wakarimasen
2 天前
如果不需要分发直接起 HTTP server 然后访问 localhost:[port]
Tomatopotato
2 天前
可以看看 ahk 做出的界面吗
Tomatopotato
2 天前
@wakarimasen 这确实也是个思路。直接在 go 程序里写个服务器,写个简单前端网页,打包出 exe ,双击直接跳转浏览器,相当于用浏览器当 gui 了。
roundgis
2 天前
我以前用过 autoit 写界面
itakeman
2 天前
@iorilu 前端完全没摸过,主要不会啊,怎么个过程我都不清楚
itakeman
2 天前
@Tomatopotato 懒得上传了,就写了一个控制智能开关的命令行,一个界面上带了开启关闭按钮,还有设置时间间隔、时间点定时开启关闭
itakeman
2 天前
@roundgis 尝试 ai 写过,就这个 autohotkey 运行起来了,打包也小,我就感觉挺满意了
itakeman
2 天前
@wakarimasen 浏览器访问也不是很方便,我感觉就想着写着界面,最好安卓、win 能一起就更好了
Donduck
2 天前
AHK 也不是一个跨平台的东西啊
itakeman
2 天前
@Donduck 所以我后面用 fyne 重写了,但是随随便便一个接近 hello world 的界面,运行起来都差不多 180Mb 运行内存了。。
czyt
2 天前
我用 autoit
iorilu
2 天前
@itakeman 现在都 ai 搞得, 你不会还没用上 ai 写代码把, 学习下吧, 比你折腾其他玩意强

现在我基本明白了

搞 gui 即便就两条路

要么选择该语言原生 gui, 如果有的话, 要么用 webview+web 那套

其他都瞎折腾没意义
yyysuo
2 天前
@itakeman go 里面写 api ,静态单文件 html 调用 api 。vibe coding ,只需要描述自己的需求就好了,报错就扔给 ai ,可以的。
kasusa
2 天前
https://github.com/cornradio/ahkshortcut
都说到 ahk 了 我推荐一下自己写的小工具。
用这个你可以把任何命令行直接变成快捷键。
Luckykeeper
2 天前
挺像的,前端苦手,最早是用的 Fyne ,后来去看了看 Godot + Go 的方案看着挺不错,稍微学了下感觉没有 Fyne 好看,于是去学了 Flutter ,现在是 Flutter + Go ,OP 不妨去试一下 Flutter ,或许有人说 Flutter 选了 Dart 作为开发语言是败笔,但是从我使用感受来看,我觉得 Dart 对于写 Go 的上手难度比 JS 那套低很多,界面做出来又好看(缺点是对上古浏览器的兼容以及加载速度这块,重一些),学会了 Flutter 还可以顺手写写客户端,很爽

实践:Devops ,用 Go + Fyne 写过类 Ansible 的自动部署工具( C/S ),Go + Flutter 写了 k8s 的容器管理和离线升级平台(C/S),Go + Flutter 写了 k8s 微服务(B/S)等等,都很好用,自从会写 Flutter 之后就把 Fyne 扔了,太香了,想打客户端就打客户端,想打 web 包就打 web 包

附一张图康康效果:

https://youke1.picui.cn/s1/2025/09/24/68d35bb093a8b.png
itakeman
1 天前
@iorilu @iorilu 有用过,就是我是业余学习的编程。完全不了解前端写代码的整过过程,自己懂得东西,有时候问 ai 都能写错,更不用说不懂的东西了,想问 ai 都无从下手

本来想选择原生的,性能也不咋地,想着这样骚操作也能用,就不在乎了
itakeman
1 天前
@yyysuo 感谢提示,有空试一下可行性
itakeman
1 天前
@kasusa 哇,还有这样的神器啊,好东西啊
itakeman
1 天前
@Luckykeeper 为了跨平台,我学习了很多,go 语言也是因为这个才学习的。为了写 ui 我最早就是学了一部分 Flutter ,因为不是从事这行业,时间也有限。学到一半,后面没时间久了就慢慢放弃了,现在拿起来都没什么勇气,感谢你的鼓励,突然有那么点动力重新拾起来

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

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

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

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

© 2021 V2EX