一、介绍
Hammerspoon是一种可以让你更好的管理你的Mac OS X系统,用来自动化任务以及自定义Mac OS X设置的功能强大的框架。Hammerspoon是一个基于Lua语言的框架,Lua是一种轻量级的嵌入式脚本语言,易于学习及使用。Hammerspoon具有很多有用的功能,例如通过Lua脚本创建快捷键,窗口管理、键盘修改以及自动化任务等等。同时,由于Hammerspoon紧密集成了Lua的API,你还可以快速地编写Lua脚本来调用一些高级的操作系统功能。
二、Hammerspoon基础
1、安装
首先,在官方网站 https://www.hammerspoon.org 下载最新版本的Hammerspoon并安装。安装后启动应用程序,菜单栏上会出现Hammerspoon的图标。
2、Hammerspoon配置界面
在菜单栏上,点击Hammerspoon图标,在下拉菜单中选择“Open Config”,就会打开配置文件的修改界面。Hammerspoon的配置文件使用的是Lua编写的,打开时,你会看到它已经定义了一些基础的配置内容。
-- 示例代码
-- 将CMD + Q 绑定到退出APP的动作
hs.hotkey.bind({"cmd"}, "Q", function()
hs.application.quitAll()
end)
3、快捷键绑定
一个最常见的用途就是为应用或命令定义快捷键,使用Hammerspoon的hs.hotkey.bind函数绑定自己想要的快捷键即可。如下所示的代码将CMD+M绑定到将某应用从最小化状态还原到正常状态:
-- 示例代码
hs.hotkey.bind({"cmd"}, 'M',function()
local app = hs.application.frontmostApplication()
app:unhide()
end)
4、自动化任务
除了绑定快捷键,我们还可以使用Hammerspoon来自动执行任务。比如我们可以设置在指定时间运行某个App,如下的代码可使Safari在每天早上9点打开:
-- 示例代码
hs.timer.doAt("09:00", "1d", function()
hs.application.launchOrFocus("Safari")
end)
三、键盘修改
Hammerspoon还提供了非常方便的键盘修改功能,你可以使用Hammerspoon修改任何的键盘按键。例如,你可以将Caps Lock键映射为Control键。如下代码将Caps Lock键与Control键映射:
-- 示例代码
hs.loadSpoon("SpoonInstall")
hs.hotkey.bind({"cmd"}, "R", function()
hs.application.launchOrFocus("Safari")
end)
四、窗口管理
Hammerspoon可以强大的管理窗口。例如将窗口调整到距离屏幕左边界1/3的位置:
-- 示例代码
hs.hotkey.bind({"cmd","alt","ctrl"}, "Left", function()
win = hs.window.focusedWindow()
f = win:frame()
screen = win:screen()
max = screen:frame()
f.x = max.x
f.y = max.y
f.w = max.w / 3
f.h = max.h
win:setFrame(f)
end)
五、使用Hammerspoon来维护Mac OS X系统
通过Hammerspoon,我们也可以对系统其他方面进行自动化。例如,你可以按照下面的代码示例,检查并更新HomeBrew和macOS中的各种工具:
-- 示例代码
local installable = hs.fnutils.filter(
dirtyoutput, function(s) return s:sub(1,2) == " " and s:sub(-9,-1) == "(newest)" end)
if #installable == 0 then return end
hs.notify.new({title="Homebrew Updates"; informativeText=table.concat(installable,"\n")}):send()
end
hs.hotkey.bind({"cmd", "alt", "ctrl"}, "U", checkForUpdate)
六、结语
本文介绍了Hammerspoon的基础知识,以及一些常用的功能。Hammerspoon具有很多有用的功能,可以让你更好地管理Mac OS X系统,提高你的工作效率。如果你需要自动化任务、自定义Mac OS X的特定设置,或者使用Lua脚本调用操作系统高级API,那么Hammerspoon将是你的不二选择。