用 Hammerspoon 精通 macOS 自动化

July 16, 2025

使用 Hammerspoon 精通 macOS 自动化:解锁更智能的工作流程

Hammerspoon 是一款革命性的 macOS 桌面自动化工具,它将系统级 API 与灵活的 Lua 脚本引擎相结合。通过编写自定义的 Lua 脚本,您可以对系统进行强大的控制。无论您是想简化重复性任务、精确管理窗口,还是对系统事件做出响应,Hammerspoon 都为您构建理想工作流程提供了坚实的基础。

入门指南:您的 Hammerspoon 初体验

开始使用 Hammerspoon,请下载最新版本并将其安装到“应用程序”文件夹中。首次运行该应用程序时,系统会提示您授予必要的辅助功能访问权限。设置完成后,您可以点击菜单栏图标并选择“打开配置文件”来访问 Hammerspoon 的配置。如需全面的 API 文档,请查阅官方 Hammerspoon API 文档,探索可用的各类扩展和功能。

Lua 脚本的力量

Lua 是一种轻量级但功能强大的编程语言,非常适合编写复杂的自动化脚本。如果您是 Lua 新手,可以参考像“M 分钟学会 Lua”之类的快速教程,这是一个极佳的起点。

核心功能与实用示例:

1. Hello World & 通知: 从基础开始。Hammerspoon 允许您绑定快捷键以触发操作。一个简单的例子是绑定一个按键组合,通过 hs.alert.show() 显示“Hello World!”通知,或者通过 hs.notify.new() 使用 macOS 原生通知。

hs.hotkey.bind({"cmd", "alt", "ctrl"}, "W", function()
  hs.alert.show("Hello World!")
end)

2. Spoons 衣架:预制插件: 通过“Spoons”(预制插件)来扩展 Hammerspoon 的功能。例如,您可以安装“AClock”Spoon,并使用自定义快捷键来切换其显示。

hs.loadSpoon("AClock")
hs.hotkey.bind({"cmd", "alt", "ctrl"}, "C", function()
  spoon.AClock:toggleShow()
end)

3. 窗口管理: 掌控您的窗口。Hammerspoon 在处理窗口框架方面表现出色。您可以精确移动窗口、将它们调整为屏幕的一半大小,或使用 hs.layout 创建复杂的窗口布局。您甚至可以绑定按键以实现类似 Nethack 的直观窗口移动。

-- 将焦点窗口向左移动 10 像素
hs.hotkey.bind({"cmd", "alt", "ctrl"}, "H", function()
  local win = hs.window.focusedWindow()
  local f = win:frame()
  f.x = f.x - 10
  win:setFrame(f)
end)

-- 将焦点窗口移动到屏幕左半部分
hs.hotkey.bind({"cmd", "alt", "ctrl"}, "Left", function()
  local win = hs.window.focusedWindow()
  local f = win:frame()
  local screen = win:screen()
  local max = screen:frame()
  f.x = max.x
  f.y = max.y
  f.w = max.w / 2
  f.h = max.h
  win:setFrame(f)
end)

4. 窗口过滤器: 使用 hs.window.filter 为您的自动化添加上下文。此模块允许您根据应用程序、窗口属性甚至自定义谓词应用规则,从而精确控制脚本的运行时间。一个实用的用例是在从 Safari 粘贴到 Messages 时清除剪贴板,以防止意外链接展开。

5. 配置重载: 通过自动重载 Hammerspoon 配置来简化您的开发流程。您可以绑定一个快捷键进行手动重载(hs.reload()),或者使用 hs.pathwatcher 来监视您的配置目录中的更改并触发自动重载。

6. 交互式应用程序菜单: 自动化应用程序菜单的交互。Hammerspoon 可以查找和选择菜单项,使您能够控制应用程序功能,例如切换 Safari 的用户代理字符串。

7. 菜单栏项与系统事件: 使用 hs.menubar 创建自定义菜单栏项以显示状态或触发操作。您还可以响应系统事件,例如应用程序激活(hs.application.watcher)、Wi-Fi 网络更改(hs.wifi.watcher)或 USB 设备连接(hs.usb.watcher)。

8. 高级自动化: Hammerspoon 的功能还包括绕过粘贴阻止、运行 AppleScript、控制 iTunes 和 Spotify 等媒体应用程序、在屏幕上绘制以提供视觉反馈、发送 iMessage/SMS,甚至通过 URL 自动化 Hammerspoon 本身。

Hammerspoon 是开源软件力量的证明,为 Mac 用户提供了前所未有的灵活性,让他们能够定制和自动化自己的数字生活。大胆尝试,动手实践示例,发现 Hammerspoon 如何彻底改变您的日常计算体验。

原创文章: 查看原文

分享本文