爱意满满的作品展示区。
fds

macOS Hammerspoon 替代,包含启动器、键入扩展、鼠标手势等功能

  •  
  •   fds · 3h 18m ago · 184 views

    Hammerspoon 很好用,就是 lua 单线程模式有时会有卡住的问题。而 Hammerspoon 提供的底层扩展能力有限。最近看 https://github.com/xbenduan/vitals 这个菜单栏显示系统信息的应用用了 MyGo ,可以借助 PureGo 与 macOS 原生 ObjC 库打交道,可以方便实现一些底层逻辑,比如拦截键盘鼠标输入,控制剪贴板之类的。

    我最早用 Karabiner 的 Launcher 模式,就是按住一个按键再按其他键启动其他应用。这两个键可以是都普通按键,比如按住 a 再按 b 就可以启动或隐藏一个应用。但 Karabiner 一度因为系统升级不能用,就借助 Hammerspoon 里实现了一个类似的。但由于前面说的单线程问题,hs 里功能多了可能会互相影响。现在有 MyGo 就可以直接借助 Go 语言清晰的并发逻辑避免这个问题啦。下图就是我配置的 tab 键效果,单击就是普通 tab ,长按会在屏幕顶部弹出,再按相应按键可以启动应用或者做各种事情( shell 脚本等)。配置文件是个 md ,有示例,方便修改。

    tab 按住后

    键入扩展也是可以根据你敲入的按键,自动替换或执行命令。比如示例里有 =b64 这个扩展,敲入这 4 个字符后,会把剪贴板里的 base64 编码的内容恢复成原始内容(或者反向,自动识别),粘贴到当前文字位置。实际就是调用个配置目录里的脚本,然后删掉敲入的 4 个字符,再粘贴脚本结果。

    鼠标手势就更简陋,可以配置按住一个鼠标键后向八个方向拖动实现一些功能。可以区分 app 。

    最后说下 MyGo 的优点就是编译快,感觉没比执行脚本慢多少。并且生成的 app 不用拖动安装,直接命令行 open 就用了,还能选择启动时自动运行,非常方便。所以这个项目不提供二进制编译包,只推荐 clone 代码后编译执行。拦截键盘权限高,自己编译更安全。Go 工具链也不大。实用优先,没太美化。整体是用 native 模式运行,内存小于 50MB 。

    最后代码仓库在 https://github.com/liukun/burin 欢迎试用和提意见。需要改动和加功能找 agent 处理一下就可以。有帮助的话,麻烦给个免费的 star🌟 还有些小功能没提,比如自动调整窗口大小、自动退出不用的 app 等。

    No Comments Yet
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2079 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 15:53 · PVG 23:53 · LAX 07:53 · JFK 10:53
    ♥ Do have faith in what you're doing.