macOS 自带的 Automator.app 并没有给出睡眠及唤醒时的条件变量,不过可以通过 sleepwatcher 来监测并执行一些脚本。

sleepwatcher

安装:

brew install sleepwatcher

安装完成后有使用提示,sleepwatcher 会在睡眠和唤醒时自动运行 ~/.sleep~/.wakeup

服务由 brew services 管理:

brew services -h

创建文件并给予运行权限:

touch ~/.sleep && chmod +x ~/.sleep
touch ~/.wakeup && chmod +x ~/.wakeup

由于系统限制,睡眠时的操作不能运行超过 15 秒。

可以在 ~/.sleep 写入一个创建文件夹的操作作为测试:

#!/bin/zsh

mkdir ~/Desktop/test

盒盖、打开,桌面应该就有一个 test/ 目录了。

睡眠时关闭 QQ

QQ for Mac 多年以来一直会在合盖状态下不知何时突然响起登录声,真的是让人无语,经常是合盖睡觉了,躺床上刚要睡着的时候 QQ 突然响了。

一个 python 脚本,关闭 QQ 的进程:

#!/usr/local/bin/python3

import psutil

for pid in psutil.pids():
    name = psutil.Process(pid).name()
    if name == 'QQ jietu plugin' or name == 'QQ':
        psutil.Process(pid).terminate()

给予脚本权限并在 ~/.sleep 中执行脚本就可以了。

#!/usr/local/bin/zsh

/.../terminate_QQ.py

同步 Rime

#!/usr/local/bin/zsh

/Library/Input\ Methods/Squirrel.app/Contents/MacOS/Squirrel --sync

其他

能干的事情很多,比如启动/关闭程序,开关蓝牙,播放音乐啥的。。。