美文网首页
macOS 效率系列 05: 能让机器做的事情就不要自己动手

macOS 效率系列 05: 能让机器做的事情就不要自己动手

作者: 枫影JustinYan | 来源:发表于2019-08-15 17:37 被阅读0次
image

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

〇、能让机器做的事情就不要自己动手

macOS 效率系i列 01: 窗口管理 | 枫言枫语 我们简单介绍过 Hammerspoon 这个 App,它可以用来做窗口管理,且已经有许多人编写了自己的窗口管理脚本,只需下载使用即可。

当时我们亦提过,这个东西是一个自动化工具,它能做的事情非常多,不仅仅用于窗口管理。

本系列此前的文章已经介绍过,使用 Alfred 之类的效率工具可以节省大量重复的机械劳动,但是每个工具的设计都是有针对性的。Alfred 也有它不太擅长的场景,比如说它的 UI 完全集中在输入框内,并不适合比较复杂的交互和内容展示。虽然它也有 iTunes Mini Player 这样的 UI:

image

但是我觉得并不好用。本着“能用机器做的事情就不要自己动手”的想法,今天我们来聊聊如何利用 macOS 上的自动化工具帮助我们自动完成一些相对复杂的工作。

一、Automator

<img src="http://justinyan.me/wp-content/uploads/2019/08/Automator-squashed.jpg" width=128>

和我们在 macOS 效率系列 03: 全键盘操作的快捷入口 提到的 Spotlight Feature 一样,同在 2004 年的 WWDC 上由乔布斯首次介绍了 Automator 这个 App(Steve Jobs Keynote WWDC 2004 - YouTube 从 1:24:23 开始)。

我接触 macOS(OS X) 比较晚,第一次使用的是 OS X 10.6 Snow Leopard。Automator 已经存在好几年了,我第一次使用 Automator 是用来压缩设计师给我的视觉稿。当时 iPhone 4 发布大约一年左右,大家第一次接触 Retina Display,图片资源也需要用 @2x 来区分高清版本。

设计师给我的视觉稿是 2x 大小,我嫌自己把每一张图都缩小太麻烦,即便全程使用快捷键也依然是大量的重复工作。所以用上 Automator 写了一个 Workflow,作为一个Service(现在叫做 Quick Actions 了) 存在 Finder 的 Services 菜单里。以后设计师给我发图我只要全选然后跑一遍 Service 就可以把 2x 图缩成 1x 图并且自带后缀重命名了。

年代久远已经找不到当年写的自动化 Service 了,大概是类似这样的感觉:

image

可视化编程是 Automator 最大的特点,无需写代码背景,只要使用鼠标拖拽点击就可以操作 Finder, Photos 等多个系统 App。这个来自 Apple Script 团队的作品,把自 1993 年以来随 System 7 发布的 Apple Script 又向前推了一步。

创建好的 Service 和 Workflow 都可以用文件的形式进行分享。不过,还有比 Automator 更好用的可视化编程 App。

二、Keyboard Maestro

image

官网: https://www.keyboardmaestro.com/main/

最早于 2002 年由开发者 Michael Kamprath 发布的一款可视化编程的自动化工具,比 Automator 出现还要早。2004 年被位于西澳珀斯(Perth)的软件公司 Stairways Software 收购了,并在此基础上不断优化和改进。目前最新的版本是 2018 年 8 月发布的 8.2.4,相信今年 macOS Catalina 发布后这款 App 还有不少辅助功能限制授权的 API 要进行更新。

image

相比 Automator,Keyboard Maestro 支持更多的系统事件通知,比如通过 WiFi SSID 变更可以驱动一个 Marcro 自动执行。

Keyboard Maestro 也支持把操作入口挂到 Menubar 上自己 icon 的下拉菜单里。

image

我曾经玩过一阵子 Auto Window Tiling 的 Serivce,叫做 KWM,这是它的项目地址: koekeishiya/kwm: Tiling window manager with focus follows mouse for OSX。因为这个东西是完全命令行操作的,所以当时我在 Keyboard Maestro 的菜单上挂了 KWM 的重启/启动/关闭的快速入口。

image

它的做法简单粗暴,就是自动把桌面上所有的窗口强行布局成配置文件里选中的 layout。支持通过鼠标加上快捷键来交换窗口位置。但是后来觉得这种强制的做法不太适合我就没再使用了。

支持录制

如果你没有任何编程基础,也完全不想动脑思考逻辑,那么你还可以使用 Keyboard Maestro 的录制功能。通过你的 UI 动作自动帮你生成对应的 Macro。

创建一个新的 Macro,点击右下角的 Record 按钮即可开始录制:

image

支持打开本地网页 UI

Keyboard Maestro 支持的触发器(Triggers)和动作(Actions)很多,利用好这些工具可以组合出非常有意思的东西来。

你甚至可以用触发器自动收集完所需信息之后,打开一个浮窗加载网页,把信息通过网页 UI 的方式展示出来:

image

我们还可以把 Alfred 和 Keyboard Maestro 结合起来用,就看你的想象力了。

三、Hammerspoon

image

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

从官网的记录来看,Hammerspoon 最早的版本是 2014 年发布的 0.9.4,自那以后 Hammerspoon 一直是 0.9.x 的状态在更新。这个开源项目在 Github 上有超过 5k 个 star,发布了五年依然没有宣布 1.0。

项目的主力开发者之一 @cmsj 今年 5 月也在 issue 中讨论这个 App 差不多该发布 1.0 然后往 2.0 前进了。

使用 Lua 的 App

和上文介绍的可视化编程 App 不同,Hammerspoon 是硬核的真·编程。你需要在用户侧编写 Lua 脚本,这个脚本将跑在 Hammerspoon 提供的 Lua 虚拟机上,通过项目提供的 luaskin 接口,和应用层进行通信,从而只用 Lua 脚本就能使用系统提供的各种能力,包括公开的和私有的 API。

假如读者朋友已经有一定的编程经验但是不熟悉 lua 语言,这里推荐使用 Learn X in Y minutes 来快速上手(亦有中文版: X分钟速成Y)。Lua 相比于其他特性丰富的语言来说要简单得多,很容易学,而且我们在 Hammerspoon 最主要的目的也只是实现自动化替代机械劳动而已,并不需要多么高深的 Lua 功力。

Get started

image

Hammerspoon 的 UI 非常简单,只有一个显示 Log 和可以进行全局设置的窗口,其他所有的配置都放在 ~/.hammerspoon 目录下。

➜  .hammerspoon git:(dev) ls
README.md Spoons    hs        init.lua

init.lua 是 App 启动后会读取的初始化脚本,也是我们的主战场。通过 require 关键字我们可以引入官方提供的能力或者自己下载的第三方库:

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

上述代码实现了通过快捷键 ctrl+alt+h 对当前 Workspace 下所有窗口进行重排布局,用到的 hs.tiling 来自 https://github.com/dsanson/hs.tiling, hs.hotkey 则是 Hammerspoon 自带的能力。

Hammerspoon 官方文档有所有 API 的说明。基本上 macOS 自带的能力 Hammerspoon 都有覆盖,包括 WiFi 触发器,蓝牙触发器,自带 SQLite,控制 Spotify,控制 iTunes,自定义弹窗,alert,notification 等等。

如果官方提供的能力不能满足你的需求,你还可以自己把 Github 上的代码 clone 下来,自己实现需要的 API。

这里还有个用户贡献的参考配置列表:https://github.com/Hammerspoon/hammerspoon/wiki/Sample-Configurations。下载覆盖后即插即用。

一些用户分享的配置

我的使用

首先是用于窗口管理, ctrl+alt+left/right来实现水平三分屏(大屏幕用),ctrl+cmd+left/right 实现两分屏(MacBook 用)。ctrl+alt+h 实现多列自动布局。

然后是 WiFi Watcher,发现我连上了公司的 WiFi 就自动帮我把 MacBook 静音。

加了一个快捷键自动 Reload Config 方便调试。

当切换到 Finder App 的时候自动激活属于 Finder 的所有窗口,不然默认情况下只会激活最后一个,如果开很多就比较难找到我要的那一个。

目前我只用了这一些,但是 Hammerspoon 的可扩展性非常强,基于它可以实现很多有意思的东西。如果读者朋友具备写代码的能力的话,用脚本实现是比可视化编程更灵活更高效的做法。

参考资料

相关链接

相关文章

  • macOS 效率系列 05: 能让机器做的事情就不要自己动手

    欢迎大家留言或者邮件 justin@justinyan.me 分享你喜欢的效率工具或者效率技巧。 〇、能让机器做的...

  • 先想好再做

    想要提高自己的效率,那么在做事情之前一定要先想好,如果自己没想好就开始动手,那么往往需要返工,还不如开始就把事情做...

  • 困惑和思考

    时间 把能让别人做到让别人做,把能让机器做的让机器做,把时间用在重要的事情上,用在你最想达到的目标和愿景上,用在你...

  • 2022年4月16日《跟孩子一起做家务》培训总结经验王佳+春蕾五

    感受: 1.锻炼孩子的动手能力,让孩子知道从小就自己的事情自己做,力所能及的事情自己做。 收获: 培养孩子的自信心...

  • 导演渡边步

    渡边步从79年起的TV版机器猫系列原画,作画导演,05年至今的最新TV版机器猫系列角色设定,脚本师,感动系列中篇《...

  • 快乐动手做自己喜欢做的事情

    十多天没有出门了,今天带孩子们出门去理发,里三层外三层穿成球,戴上口罩,就露着两只眼睛,唯独忘记了戴手套。 孩子们...

  • 杂感

    不要试图讨好任何人,做自己,让自己有趣起来自然能让别人感觉舒服,不然就只能让别人感觉别扭。经历的事情要学会总结,不...

  • 伯凡日知论20190122

    首先要肯定机器使我们的工作效率大大的得到了提高,家里的智能化机器确实可以让节约很多时间,提高效率做其他的事情。记得...

  • 多尝试才会有所成长

    越是自己觉得困难的事情越是要告诉去尝试,要去动手做,要坚持,要相信自己。 对于自己不了解的事情,不要总是自以为是,...

  • 轻重缓急

    事情有轻重缓急,每天都有各种各样的事情,轻重缓急得分清楚,这样做事的效率才会高,才能让自己更好地掌控自己。 生活就...

网友评论

      本文标题:macOS 效率系列 05: 能让机器做的事情就不要自己动手

      本文链接:https://www.haomeiwen.com/subject/zoqtsctx.html