使用 Hammerspoon 操作窗口和鼠标

是否觉得以下问题很蛋疼

  1. 改变窗口布局大小触控板拖拉拖拉拖……
  2. 多工作区间移动窗口触控板拖动应用配合键盘切换空间或者使用Mission Control拖动
  3. 多屏幕
    3.1 鼠标想换另一个屏幕上拖拖拖……
    3.2 窗口想放另一个屏幕上拖拖拖……

曾经的方案

之前一直在使用 SizeUp 配合 CatchMouse 解决这些问题
SizeUp 挺好用的但免费版本老弹 License 有点烦
CatchMouse 只能移动鼠标到屏幕中心不能记录位置切换窗口之后还要拖拖拖让人凌乱
后来找到了 Hammerspoon完美替代上面两者

PS当然还有很多类似软件 MoomDivvy 等等……这里就不说了

Hammerspoon

Hammerspoon是 OS X 下的一个强大自动化工具
可以使用Lua脚本语言控制系操作系统应用窗口鼠标……等等……

下载 & 安装 & 配置

下载最新版本然后拖到 /Applications
安装完后还需要创建 ~/.hammerspoon/init.lua 存放脚本

基础

不会 LuaNo problem
copypaste别人配置直接上手干
当然如果想稍微学习下 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你没准会涌现很多灵感~