使用 Hammerspoon 操作窗口和鼠标
是否觉得以下问题很蛋疼?
- 改变窗口布局、大小:触控板,拖拉拖拉拖……
- 多工作区间移动窗口:触控板拖动应用配合键盘切换空间,或者使用「Mission Control」拖动
- 多屏幕
3.1 鼠标想换另一个屏幕上,拖拖拖……
3.2 窗口想放另一个屏幕上,拖拖拖……
曾经的方案
之前一直在使用 「SizeUp」 配合 「CatchMouse」 解决这些问题。
SizeUp 挺好用的,但免费版本老弹 License 有点烦。
CatchMouse 只能移动鼠标到屏幕中心,不能记录位置。切换窗口之后还要拖拖拖,让人凌乱。
后来,找到了 Hammerspoon,完美替代上面两者。
PS:当然,还有很多类似软件 「Moom」 和 「Divvy」 等等……这里就不说了。
Hammerspoon?
「Hammerspoon」是 OS X 下的一个强大自动化工具。
可以使用「Lua」脚本语言控制系操作系统:应用、窗口、鼠标……等等……
下载 & 安装 & 配置
下载最新版本,然后拖到 /Applications
下。
安装完后,还需要创建 ~/.hammerspoon/init.lua
存放脚本。
基础
不会 Lua?No problem!
参(copy)考(paste)别人配置,直接上手干!
当然,如果想稍微学习下 Lua,可以阅读「Learn X in Y minutes」。
要编写自己的脚本,官方「Hammerspoon API」会是你的好朋友。
我的配置
配置靠偷,东拼西凑……
这个模拟 SizeUp 的配置非常好,可以从这个配置开始修改、拓展。
代码
地址:https://github.com/tgmeng/dotfiles/blob/master/hammerspoon/.hammerspoon/init.lua
由于代码太长,就不贴出来了 :P。
PS:脚本变更,记得「Reload Config」!!!
快捷键 & 功能
按键:
⌃:ctrl
⌥:alt
⇧:shift
⌘:cmd
窗口布局:
⌃⌥⌘ + H:屏幕左半边,高度占满
⌃⌥⌘ + L:屏幕右半边,高度占满
⌃⌥⌘ + K:屏幕上半边,宽度占满
⌃⌥⌘ + J:屏幕下半边,宽度占满
⌃⌥⌘ + M:全屏
⌃⌥⌘ + C:屏幕中间,宽高为屏幕一半
⌃⌥⌘ + /:还原上次位置、大小
屏幕间移动窗口:
⌃⌥ + X:移动到下一个屏幕
⌃⌥ + Z:移动到上一个屏幕
工作空间之间移动窗口:
⌃⌘ + X :移动到下一个空间
⌃⌘ + Z :移动到上一个空间
⌃⇧⌘ + X:移动到下一个空间,同时切换工作空间
⌃⇧⌘ + Z:移动到上一个空间,同时切换工作空间
屏幕间移动鼠标:
⌃ + 1:移动到下一个屏幕
⌃ + 2:移动到下一个屏幕
*PS:屏幕间切换鼠标时,会记录当前鼠标位置;切换回来时复原。
*PS2:标红鼠标位置,方便找到鼠标。
关于工作空间
由于 Apple 未提供官方的 API,所以 Hammerspoon 中没有相关接口。
需要使用非官方工作空间接口拓展模块「hs._asm.undocumented.spaces」。
下载安装:
$ git clone https://github.com/asmagill/hs._asm.undocumented.spaces spaces
$ cd spaces
$ make install
其他详细说明,可以参考模块的 README.md。
最后
当然 Hammerspoon 能干的不只有这些,管理窗口只是一小点实践成果。
没有做不到,只有想不到!畅游官方「Hammerspoon API」,你没准会涌现很多灵感~