- 安装 Hammerspoon
git clone https://github.com/xbot/hammerspoon.git ~/.hammerspoon
- ⌃⌥⌘ + ← 将当前窗口移动到左半屏
- ⌃⌥⌘ + → 将当前窗口移动到右半屏
- ⌃⌥⌘ + ↑ 将当前窗口移动到上半屏
- ⌃⌥⌘ + ↓ 将当前窗口移动到下半屏
- ⌃⌥⇧ + ← 将当前窗口移动到左上 1/4 屏
- ⌃⌥⇧ + → 将当前窗口移动到右下 1/4 屏
- ⌃⌥⇧ + ↑ 将当前窗口移动到右上 1/4 屏
- ⌃⌥⇧ + ↓ 将当前窗口移动到左下 1/4 屏
- ⌃⌥ + ← 把光标移动到下一个显示器
- ⌃⌥ + → 把光标移动到上一个显示器
- ⇧⌥ + ← 将当前活动窗口移动到上一个显示器
- ⇧⌥ + → 将当前活动窗口移动到下一个显示器
- ⇧⌥ + 1 将当前活动窗口移动到第一个显示器并窗口最大化
- ⇧⌥ + 2 将当前活动窗口移动到第二个显示器并窗口最大化
- ⌃⌥⌘ + F 全屏
- ⌃⌥⌘ + M 最大化窗口
- ⌃⌥⌘ + C 将窗口放到中间
- ⇧⌥ + H 切换活动窗口
- ⇧⌥ + / 显示窗口切换的快捷键
根据布局配置,在应用程序被激活时自动调整大小和重新定位。
如果您不需要desktop_layout模块,请将其注释掉。
- ⌃⌥⌘ + L 锁屏
此配置包含一个集中的日志系统,方便进行问题排查。
- 日志级别控制: 通过 Hammerspoon 菜单栏图标 ->
Debug Log Levels子菜单,可以为每个模块动态切换日志级别(info或debug)。这有助于在需要时查看更详细的调试信息,而不会被不必要的信息淹没。
通过 ⌥ + 快捷键 的组合,可以快速启动或切换到指定的应用程序。这个功能的核心逻辑是,如果应用程序未运行或不在前台,则启动或将其置于前台;如果它已在最前台,则隐藏它。
所有的快捷键绑定都在 modules/launcher.lua 文件的 applist 变量中定义。您可以根据自己的需要轻松地添加、删除或修改这些快捷键。
例如,根据默认配置:
⌥+A启动/切换Arc⌥+C启动/切换Visual Studio Code⌥+K启动/切换kitty
...等等。请直接修改配置文件以获得最适合您的工作流。
自动格式化剪贴板中的 JSON 。通过托盘图标中的菜单项开关。
手动收集网页支持 Google Chrome / Arc Browser / Brave Browser / Vivaldi
⌃⌥⌘ + O
自动收集网页支持任意浏览器,需将特定格式字符串复制到剪贴板。例如在 Surfingkeys 中添加如下配置:
mapkey('yO', 'Copy OmniFocus sensible info.', copyOmniFocusSensibleInfo);
function copyOmniFocusSensibleInfo() {
var info_arr = [];
info_arr.push("#omnifocus_sensible");
info_arr.push(document.title);
info_arr.push(window.location.href);
Clipboard.write(info_arr.join("\n"));
}菜单栏点击屏幕取色。通过托盘图标中的菜单项开关。
控制是否允许系统自动休眠。通过托盘图标中的菜单项开关。
- ⌃⌥⌘ + K 手动切换配置方案
- 根据 App 自动切换:
karabinerProfileSwitcher.appProfiles = { ["game.exe"] = "PC Keyboard", }
本配置包含一个统一的外观管理器(modules/appearance_manager.lua),它会监听 macOS 的系统外观变化(深色/浅色模式),并自动为支持的应用切换主题。
目前已支持:
- Hammerspoon Console:自动切换控制台的深色/浅色主题。
- kitty 终端:自动切换
light.conf和dark.conf主题。 - Neovim:通过
nvr命令远程控制 Neovim 切换主题。
为了让 Neovim 主题切换生效,您需要:
- 在您的 Neovim 配置文件(如
.vimrc)中添加主题切换的 Lua 函数。 - 安装
neovim-remote(nvr) 并设置别名。 - 如果
nvr的可执行文件不在标准路径下,您可以在modules/appearance_manager.lua文件顶部的nvr_executable_path变量中指定其绝对路径。
此模块是可扩展的,未来可以方便地加入对其他应用(如 VS Code)的控制。
modules/focus_mode.lua 会监听 macOS 专注模式的变化。当“夜间”模式开启时,它会将系统切换为深色外观并通过 nightlight 开启夜览;退出该模式时,则切换为浅色外观并关闭夜览。
该功能需要安装 nightlight,并为 Hammerspoon 授予“完全磁盘访问权限”,以读取当前专注模式。目标专注模式名称和 nightlight 路径可以在模块顶部修改。
此模块会监控音频设备的变化,实现对 Noizio 应用的自动管理。
- 功能:当所有预设的耳机(如 AirPods)断开连接时,脚本会自动关闭 Noizio 应用。这可以避免在没有使用耳机时,环境音通过电脑扬声器播放出来。
- 配置:需要自动关闭 Noizio 的耳机设备名称列表,可以在
modules/noizio.lua文件的earphones变量中进行修改。
本配置的初始版本参考了以下项目: