macOS 效率系列 01: 窗口管理

Aug 8, 2019 at 20:09:29

欢迎大家留言或者邮件 justin@justinyan.me 分享你喜欢的效率工具或者效率技巧。

〇、一些有道理的废话

最近做了一次关于效率工具的小分享,工具类的东西,文章简介外加实际上手的效果要大于现场演讲,遂动此念以记之。

光阴荏苒,日月如梭。有限的时间与精力是每个人每天都要面对的问题。不同的人有不同的选择,绝大多数人在找到一个能用的方法之后就不会再费心思去寻找更加高效的途径。这大概是人类设计的缺陷,为了节能而紧闭窗户。

这个缺陷带来的后果就是本来就稀缺的时间与精力由于不采用更加高效的方法去解决问题而变得更加稀缺。

“macOS 效率系列”将介绍在 macOS 系统上实用的工具来帮助读者朋友们提高解决问题的效率。

工具只是表象,其背后是对高效的追求,是对重复机械劳动的不屑,是使用工具来进行自我增强。

1968 年斯坦利·库布里克执导的电影《2001太空漫遊》(2001: A Space Odyssey)是名留影史的佳作。其中有一幕是两拨原始的人猿部落为了争抢有限的水和食物等资源经常互相斗殴。这种情况下身体强壮的人猿就比较容易取胜。某天,一只身体瘦弱的人猿在巨兽的尸骨旁边捡到一根骨头。他尝试着敲击巨兽的头骨,发现坚硬的头骨居然能被打破——他发现了使用工具来自我增强的方法。于是他把这个想法分享给了部落的其他人猿。在下一次部落冲突的时候,手持巨兽骨头的人猿把对方打得屁滚尿流。这就是工具的力量。

我们在生活与工作中经常会遇到重复的机械劳动,有的人习惯了一直重复,有的人则选择使用工具或者制作工具,让工具和机器替自己去重复。

我想很多人其实并不是不想提升效率,只是不知如何下手,让我们通过"macOS 效率系列"抛砖引玉,希望能帮到想要高效工作的读者朋友们。

一、窗口管理

Windows 操作系统自带的窗口管理做得不错,支持鼠标拖拽吸附左右以及 Win + leftWin + right等快捷键。我们经常需要一边开着文本编辑器或者其他工具,另一边开着浏览器查资料。这种时候左右窗口布局就是非常好的辅助。

macOS 系统原生并未支持此项功能,但是有不少优秀的 App 可以实现“窗口管理”(Window Managment)。

1. Magnet ($1.99)

官网: Magnet – Window manager for Mac

Magnet for Mac 可以实现像 Windows 操作系统一样的体验,把窗口拖拽到左右边缘即可吸附并放大填满半个屏幕。同时也支持多个快捷键和多种布局,比如上下布局和四格布局。

Magnet 是我曾经常用的窗口管理工具,但是向上拖动把窗口放大的时候经常触发 macOS 自己的多 workspace 预览功能,有点烦,后来改用 Hammerspoon 就没再使用这个 App 了。

可以在 Mac App Store 购买

2. Moom ($10)

官网: Moom · Many Tricks

Many Tricks 出品的窗口管理工具。

特色是当鼠标在窗口左上角红绿灯那里悬停的时候可以选择左右上下的自动贴边布局。

同时也支持快捷键操作,也支持自定义布局。

价格 $10,可以在官网购买和下载体验版本

3. Slate (Free)

Slate 是一个开源项目,GitHub 地址: jigish/slate: A window management application (replacement for Divvy/SizeUp/ShiftIt)

Slate 基本上没什么 UI,所有的自定义通过配置文件来实现,默认的配置文件在GitHub这里

可以在 GitHub Page 上直接下载 .dmg或者下载 .tar.gz文件。

配置文件的格式大概是这样的:

# Push Bindings
bind right:ctrl;cmd  push right bar-resize:screenSizeX/3
bind left:ctrl;cmd   push left  bar-resize:screenSizeX/3
bind up:ctrl;cmd     push up    bar-resize:screenSizeY/2
bind down:ctrl;cmd   push down  bar-resize:screenSizeY/2

同时 Slate 还支持用 JS 文件来实现更加动态和复杂的配置,只需创建 ~/.slate.js 即可。

JS 配置文件的语法与文档可以参考这里

4. Hammerspoon (Free)

官网: http://www.hammerspoon.org/

GitHub 地址: https://github.com/Hammerspoon/hammerspoon

Hammerspoon 是我目前在使用的工具,它其实是一个自动化工具,可以做的事情非常多,窗口管理只是其中的一个。

Hammerspoon 本身是跑在 macOS 上的一个 App,通过 Lua 虚拟机可以运行 Lua 脚本。用户通过 Lua 脚本和 Hammerspoon App 之间进行通信。Hammerspoon 提供了许多系统能力,以 Lua API 的形式暴露给用户脚本层。

Hammerspoon 本身是开源的的,现在也有许多基于 Hammerspoon API 实现的开源组件可供调用,所以我们只需短短几行代码,就可以实现非常酷炫的窗口布局。

local tiling = require "hs.tiling"
local hotkey = require "hs.hotkey"

hotkey.bind({"ctrl", "alt"}, "h", function() tiling.cycleLayout() end)
tiling.set('layouts', { 'gp-vertical', 'columns' })

可以通过官网下载安装,然后创建初始化脚本 ~/.hammerspoon/init.lua。参考一下官网的Getting Started文档和Hammerspoon Docs,就可以愉快地实现自动化了。

二、未完待续

工具只是表象,最重要的其实是寻找高效方法的思维方式。现在有不少社区或者自媒体会分享各种效率工具,想要找到这些东西并不难,本系列不过总结一二,希望能对读者有所帮助。

相关链接