App+1 | Shortery,为 macOS 捷径增加自动化运行的新方式
在去年 WWDC21 上,Apple 推出的 macOS Monterey 将捷径带到了 macOS 上。不仅给 macOS 带来了一种新的执行重复步骤的方法,还使得捷径的编写方便了许多。
但是美中不足的是,Apple 并没有将 iOS 上的「捷径自动化」功能一并带来。在 iOS 的捷径上,我们通过「捷径自动化」功能在特定的时间、地点或者某个满足某个条件的时候,自动执行某个捷径。为了解决这一个痛点,所以来自德国的开发者 Lars Gerckens 就开发了 Shortery,为 macOS 上的捷径补齐了自动化的功能。
应用介绍
目前可以通过 官网 或者 App Store 下载并安装 Shortery(以下简称为它或者软件),初次打开它会看到如下的界面,左侧是作者已经创建好的触发器,点击左下角的「Add Shortcut Trigger」可以添加新的触发器。此处的触发器,就等同于 iOS 「捷径自动化」功能。
目前该软件可以支持多达 12 种的捷径触发方式,具体包含:
- 在应用启动、退出或是处于活跃/非活跃状态运行
- 指定时间运行,可选择每分钟,每小时,每天每周重复
- 电脑唤醒或休眠时运行
- 用户登录或登出时运行
- 使用键盘快捷键组合激活运行
- 当系统外观处于浅色或深色时运行
- 电池电量达到一定的百分比时运行
- 专注模式打开或关闭时运行
- 屏幕解锁或者锁定时运行
- 蓝牙、USB 设备、耳机接口连接或断开时运行
- 外接显示器的连接或断开时运行
- Wi-Fi 的连接或者断开时运行
点击右上角的 Preferences,可以在里面设置开启开机自启和 debug 模式,对于用户来说,只需要开启勾选「Start at login」即可。
接下来,作者就以一系列具体的例子,来向大家介绍 macOS 上的一些自动化实例。
电脑休眠自动关灯
在作者以前的 文章 中,为了实现关闭屏幕挂灯的同时并让电脑休眠,专门制作了一个捷径,可以一键切换电脑及挂灯的开关,但美中不足的是每次都要呼叫 Siri 或者手动执行一次捷径。
但有了该软件之后,可以省去主动执行的操作,全部由自动化实现。简而言之:添加一个电脑休眠的触发器,如果电脑进入休眠状态,就执行捷径,关闭 HomeKit 里的挂灯。
硬件准备
此处使用的挂灯是否是智能挂灯并不重要,重要的是确认挂灯是否支持断电记忆功能。作者使用的是明基的屏幕挂灯,是支持断电记忆功能的。所以为了能够将挂灯接入 HomeKit,我在挂灯的 USB 电源前面增加了一个智能插座,再将智能插座接入 Home App,这样变相就将挂灯接入 HomeKit 了。
捷径制作
接下来就是捷径制作了,这个案例中捷径也是非常简单的,选中挂灯并将其设置为关闭即可。
Shortery 触发器
打开 Shortery,点击左下角的「Add Shortcut Trigger」增加新的触发器。将触发条件设置为 Wake Up & Sleep,name 可以自定义,比如此处的「关闭挂灯」。在 Shortcut 一栏中选择刚刚创建的捷径,如果看不到刚刚创建的捷径,可以点击下方的「Reload Shortcut List」重新加载捷径列表。
在底部选择 Mac Sleep 的附加条件,即当 Mac 休眠的时候,运行该捷径。最后点击右上角的绿色的「Save」保存该触发器即可。
需要注意的是在 Shortery 初次运行之后,如果关闭了页面,再想开启就需要从状态栏中去开启。
保存好触发器之后,就可以开始测试一下是否好用了,点击左上角的「」选择休眠,然后就可以看到挂灯随之关闭的效果。但我这里还希望用更简单的方式让电脑进入休眠,前往「系统偏好设置 > 桌面与屏幕保护程序 > 触发角」,设置一个角启动屏幕保护程序,当鼠标移动到这个角落,就会启用屏保。屏保时间过了之后,电脑就会进入休眠状态,从而触发了 Shortery 里的触发器。
这里触发角功能虽然可以直接让电脑进入休眠状态,但是我并不推荐那么做,主要原因是触发角功能会有一定概率误触,而误触同样会触发捷径关灯。
接下来就需要设置一下屏保的时间了,前往「系统偏好设置 > 电池」,选择自己认为合适的关闭显示器时间,作者在这里选择的是 15 分钟。macOS 在接入电源和不接入电源的时候,可以使用两套偏好设置,刚才设置的是单纯使用电池的状态,所以需要再切换到「电源适配器」选项,同样去设置一个自己认为合适的休眠时间。
这样两个步骤设置完成后,就可以实现真正的自动化了。当长时间不触碰电脑或者将鼠标移动到右下角 → 启动屏幕保护程序 → 屏幕保护程序显示 15分钟 → 时间到后电脑休眠 → 触发器运行捷径关闭挂灯。要另外说明一下的是,「长时间不触碰电脑」启动屏幕保护程序,需要在「系统偏好设置 > 桌面与屏幕保护程序 」中勾选「此时间段后显示屏幕保护程序」,接下来就来看看效果吧。
有了上面这个例子之后,就可以再创建一个「电脑唤醒之后,自动开灯」的触发器了。简单来来说就是制作一个捷径,控制挂灯开关打开;再新建一个触发器,Weke Up & Sleep 触发条件、运行刚才开灯的捷径、当 App is Mac Wake Up 时触发,点击「Save」保存。
最后效果如下,视频进行了加速处理,实际用时 17 秒,因为 MacBook 唤醒、连接显示器、重新调整窗口等都需要一定的时间。但是十几秒在实际使用中,倒也无所谓了,正好可以趁这个时间,从手边上的热水机上接一杯水,喝水了再开始今天一天新的工作。
文本格式清除
在学习或者工作中,有时候将富文本文字复制到其他编辑器里,可能会将文字的格式一起复制过去。例如我在最近的课程设计要求画程序流程图,从 IDEA 复制到 OmniGraffle 中会带有背景颜色,必须通过其他文本编辑器中转一下,才能去掉这个背景颜色。
在这种情况下,就可以使用快捷键对剪切板的文字清除格式,相当于将捷径做为了格式过滤器使用。新建一个捷径,添加一个文本框,内容来自「剪切板」变量,然后后面跟着一个「拷贝到剪切板」,使用「文本」过滤一下,就可以变成纯文本了。
添加一个新的触发器,这次的触发器类型需要选择 Keyboard,也就是键盘快捷键触发。自定义 Name 为「格式清除」并指定相应的捷径,在底部按下合适的快捷键然后保存即可。
在使用的时候,先复制一串文字,再按下 ⌥+⌘+V
清除格式,使之成为纯文本,再按下 ⌘+V
就可以得到纯文本粘贴效果。相比起打开文本编辑器,在那里面复制粘贴一遍去除格式,节省了一些精力。
文本格式化为中英文加上空格
在互联网上每个人的写作风格不尽相同,有时候如果我们需要摘录其中的一段话,但是这段话和自己日常的写作风格不同,就可以考虑使用捷径来作一个简单的格式化捷径,来对文本进行格式化,例如在中英文之间加上空格。
文本格式化捷径 使用了 JavaScript 实现,从剪切板读取文本,通过 JavaScript 代码代码格式化,然后将结果再拷贝回剪切板。由于该捷径是调用网页内嵌的 JavaScript 实现的,运行速度可能稍微慢一点,所以在最后加入了一个通知,当格式化完成后发送通知提示。
捷径制作好了之后,去 Shortery 里创建快捷键触发器;在使用的时候,先复制一串文字,再按下⌃+⌥+f
为中英文之间加入空格,再按下 ⌘+V
就可以得到纯文本粘贴效果。
前后的对比效果如下图所示:
达到 80% 电量停止充电
对于电池保养来说,有一个基本原则就是不要过冲过放。虽然 macOS 内置了一个「优化电池充电」的功能,但这个功能需要一定的学习周期,而且一旦某一天充电模式有轻微的改变 macOS 就会自动帮你充满电。市面上即使有第三方的替代品,比如 AlDente,但想要实现维持在一个电量区间往往需要额外进行付费。事实上,我们同样可以通过 Shortery 实现达到 80% 电量停止充电,并将电量维持在一个区间内。
编注:为了不被 macOS 内置的「优化电池充电」干扰这个自动化,请在使用前关闭 macOS 内置的这项功能。
在 macOS 上可以通过设置 SMC 的 CHoB 和 CHoC 两个参数来控制电池是否充电,而 GitHub 上的 battery 就是一个封装好的脚本,可以通过命令行直接设置充电或者停止充电,不过该命令不提供 Homebrew 的安装包,需要手动编译安装。所以接下来就来看看如何编译安装该命令。由于 battery 命令依赖于 smc 命令,所以需要先编译安装 smc,然后才是 battery,接下来就来看看如何编译安装 smc
# 下载 smc 源代码
git clone https://github.com/hholtmann/smcFanControl
# 进入源代码文件夹
cd smcFanControl/smc-command
# 编译命令
make
# 将编译好的命令移动到系统命令目录下
sudo mv smc /usr/local/bin/
在编译过程中会出现一些警告,但是警告不影响程序的正常编译,可以忽略。当输入 smc 命令运行之后,出现如下所示的命令提示即安装成功。
接下来开始安装 battery 命令,编译安装命令如下:
# 下载 battery 源码
git clone https://github.com/actuallymentor/battery
# 进入源代码文件夹
cd battery
# 将 sh 脚本移动到系统命令目录下
sudo mv battery.sh /usr/local/bin/battery
# 赋予脚本可执行权限
chmod +x /usr/local/bin/battery
# 授予 battery 命令永久 root 权限
battery visudo
运行 battery 命令显示出帮助信息页面,根据提示信息手动设置充电或者停止充电,如果没有要求输入用户密码,则表示成功安装并赋权正确。
接下来就是制作捷径的步骤了,添加一个捷径特有的运行 Shell 脚本,将捷径命名为暂停充电,Shell 内运行命令:battery sets CH0B to 02
创建一个基于电量的触发器,当电量达到 80% 以上的时候,运行捷径「停止充电」,点击「Save」保存触发器之后即可。
想要维持一定区间的电量,除了要有暂停充电的捷径,还要有一个「达到一定百分比,继续充电」的捷径,否则一直这么暂停下去,会把电池用到没电的。所以相应地在创建一个名为「继续充电」的捷径,这次的命令需要更换为:battery sets CH0B to 00
再次创建一个基于电量的触发器,当电量低于 70% 的时候,运行捷径「继续充电」,点击「Save」保存触发器之后即可。此处的 70% 可以根据自己的实际需求去设置。
到此,一个可以自动将电量维持在 70% ~ 80% 之间的自动化任务就创建好了,这样可以尽可能地保证电池处于一个比较健康的状态,以延长电池的使用寿命。如果你需要充满电,或者需要将充电管理逻辑重新交还给系统,只需要将上述两个自动化开关重新关上即可。
小结
通过上文的几个例子,相信读者们也能感受到当 Shortcuts 结合了 Shortery 之后的强大之处,本文只使用了「电脑休眠」、「键盘快捷键」以及「电池电量」三个触发条件,相信有兴趣的读者们可以举一反三,做出一些更有趣更加实用的触发器,提高自己的生产效率,或者解放自己的双手。
参考资料
Thread by @Megabits_mzq on Thread Reader App – Thread Reader App
actuallymentor/battery: CLI for managing the battery charging status for M1 Macs
hholtmann/smcFanControl: Control the fans of every Intel Mac to make it run cooler
> 下载 少数派 2.0 客户端、关注 少数派公众号,解锁全新阅读体验 📰
> 实用、好用的 正版软件,少数派为你呈现 🚀
© 本文著作权归作者所有,并授权少数派独家使用,未经少数派许可,不得转载使用。