说明
macOS Catalina 带来了自动浅色深色模式,在「系统偏好设置-通用-外观」中即可设置

自动外观
「自动外观」会根据当前的日期和地理位置来设置自动浅色深色模式,在白天使用浅色模式,而在晚上使用深色模式,但这个「自动外观」也带来了一些问题
- 切换浅色深色模式的时间不确定
- 在使用 Mac 时不会自动切换浅色深色模式,必须在 Mac 熄屏再打开时才能自动切换
- Chrome 对网页深色模式的支持不够好,我们需要安装插件「Dark Reader」来实现网页深色模式,但这个插件无法跟随系统自动设置浅色深色模式
为了解决这些问题,我用 Keyboard Maestro 做了四个动作来实现系统及 Chrome 自动浅色深色模式。
功能及使用方式
- 自动开启浅色模式的条件 (以下三个都会触发)
- 此时的时间是 8:00
- 系统从睡眠中唤醒,且时间是 8:00-18:00
- 系统登录,且时间是 8:00-18:00
- 自动开启深色模式的条件 (以下三个都会触发)
- 此时的时间是 18:00
- 系统从睡眠中唤醒,且时间是 18:00-24:00
- 系统登录,且时间是 18:00-24:00
- 每一次打开 Chrome 时,此 macro 会判断当前「Dark Reader」的浅色深色模式是否与系统的浅色深色模式匹配,在不匹配时自动调整「Dark Reader」的浅色深色模式
原理解析
- 设置全局变量
dark_mode_flag,此变量取值于 0、1、2、3,含义如下
- 0: 系统是 dark mode, Chrome 是 dark mode
- 1: 系统是 dark mode, Chrome 是 light mode
- 2: 系统是 light mode, Chrome 是 dark mode
- 3: 系统是 light mode, Chrome 是 light mode
- 在时间是 8:00-18:00 时,根据全局变量
dark_ mode_flag 判断当前是否是深色模式,如果是深色模式,则切换为浅色模式,并更改 dark_mode_flag 的值为 2
- 在时间是 18:00-24:00 时,根据全局变量
dark_ mode_flag 判断当前是否是浅色模式,如果是浅色模式,则切换为深色模式,并更改 dark_mode_flag 的值为 1
- 在打开 Chrome 时,如果此时
dark_mode_flag 的值是 1 或 2,则表明此时 Chrome 的浅色深色模式和系统不匹配,需要将 Chrome 变更相应的模式,同时更改 dark_mode_flag 的值。