Ultimate magazine theme for WordPress.

妙用 macOS 深色模式,三种方法帮你缓解眼疲劳

0 564,699

macOS Mojave 引入的全局深色模式带来了更好的用户体验。紧接着,各路开发者和极客用户就围绕这一功能实现了各种各样的扩展与自动化,将用户体验向前推进一步,主要包括:

  • 根据时间切换外观模式,如 NightOwl
  • 随日出 / 日落切换外观模式,同上
  • 将夜览(夜间模式)与外观模式结合,如 Fluxthompsonate/Shifty
  • 指定各个 App 是否使用深色模式,如 Gray

但是随着使用,我觉得这些应用提供的功能并不够完善。无论是按照时间,还是按照日出 / 日落切换,都无法与使用者所处环境中的光线变化步调一致。毕竟多数情况下,我们处于室内,而且会通过开关灯调节环境亮度。

所以,我更希望实现的自动化切换是,配合 MacBook 搭载的环境光传感器,在外界光线变化时自动调节屏幕亮度并切换浅色 / 深色模式,我认为这样才是更加完善和符合使用逻辑的方式。此外,对于没有环境光传感器的 iMac 和 Mac mini 用户,在使用快捷键等方式调节屏幕亮度时,自动切换外观模式也是不错的。

首先,我们需要启用环境光传感器:打开「系统偏好设定 → 显示器」,勾选 自动调节亮度。如果找不到这个选项,那就说明你的设备不支持这个功能。

 

f5051ecd9d354a233e701ed0b21614ea
自动调节屏幕亮度

 

本文将介绍三种开启「在外界光线变化时自动调节屏幕亮度并切换浅色 / 深色模式」功能的途径:一个 App,以及 Keyboard Maestro 和 Hammerspoon 各一个脚本。

Dynamic Dark Mode

这是由 ApolloZhu 开发的开源免费 App,点击打开他的 Github 项目页面。我们可以到 GitHub 项目页面中 手动下载,也可以使用 Homebrew 安装:

brew cask install dynamic-dark-mode

第一次启动 App,会出现一个配置引导界面,点击「开始配置 >>」后,依次授予自动化和地理位置权限。其中自动化权限是为了控制外观模式,地理位置则是为了计算日出/日落时间,当然,你也可以拒绝地理位置权限的授予。

 

skovgldl
引导界面及授权窗口

 

结束配置后,偏好设置窗口会自动打开。我们可以看到,这里有切换快捷键、根据屏幕亮度或时间切换、菜单栏图标功能等选项,根据自己的需要进行勾选。此外,我们还可以在菜单栏图标的下拉菜单中进行手动切换。

 

506a151b62fe4e42a37dfaadfb432d6d
偏好设置

 

所以,借助这个 App,就可以有三种切换方式:手动,根据屏幕亮度,以及根据时间(日出 / 日落,自定义时间)。其中,手动与根据屏幕亮度的切换会打断当前的定时切换,直到设定的下一次自动切换时间。这样说可能有些不够明白,举个例子:我们设定 23 点至次日 8 点期间使用深色模式,那么在夜间手动切换为浅色模式后,次日 23 点钟才会再次自动启用深色模式。

Dynamic Dark Mode 的优点在于整合了多种切换方式,并且作者花了一番心思,协调它们之间的冲突干扰。不过,我们也可以看看后面基于 Keyboard Maestro 或 Hammerspoon 的脚本实现方法。

脚本实现

如果你不愿意额外安装一个软件,或者已经在用 Keyboard Maestro、 Hammerspoon 等软件,那么可以试试用它们来实现自动化切换功能。或者也可以基于这个脚本实现自己的特别需求。

核心原理其实很简单:每隔几秒检测一次当前亮度,如果亮度大于设定的阈值则将系统外观设为浅色模式,否则设为深色模式。

Keyboard Maestro 实现

如果让我列出一份 macOS 必备软件,那么 Keyboard Maestro 肯定排在列表前面。这款软件能够方便快捷地实现各种自动化功能,少数派网站中有丰富的应用文章,可以搜索查看。

首先,为了能方便地获取屏幕亮度信息,需要使用 Homebrew 安装一个程序:在终端中运行 brew install brightness

然后,点击下载 Keyboard Maestro 配置好的 Macro 文件,解压后双击安装,可以看到打开的 Keyboard Maestro 编辑界面。

 

06d6c568bce5e5223c5d853343233027
Keyboard Maestro 编辑界面

 

这里,可以看到我专门添加了一个动作来设置切换的屏幕亮度阈值(默认 30%),低于阈值时启用深色模式,你可以根据自己的需要修改它。

最后,点击右上角的 标志启用这个 Macro,然后关闭这个界面就可以了。

Hammerspoon 实现

Hammerspoon 是一款通过 Lua 编程语言脚本实现各种自动化功能的软件。它功能强大,但是不适合普通用户,这里只是为了给使用 Hammerspoon 的极客用户一个参考,所以不做过多介绍。

这个脚本在屏幕亮度低于 30% 时,除了启用深色模式外,还会在桌面壁纸上添加一层黑色透明图层,从而降低壁纸的亮度。

sizeRect = hs.geometry.rect(0, 0, hs.screen.mainScreen():fullFrame().w, hs.screen.mainScreen():fullFrame().h)
drawObj = hs.drawing.rectangle(sizeRect)
drawObj:setFillColor(hs.drawing.color.asRGB({red=0.1, green=0.1, blue= 0.1, alpha=0.5}))
drawObj:setLevel(hs.drawing.windowLevels.desktopIcon)

brightTimer = hs.timer.new(5, function ()
    if hs.brightness.get() < 30 then
        hs.osascript.applescript('tell application "System Events" to tell appearance preferences to set dark mode to true')
        drawObj:show()
    else
        hs.osascript.applescript('tell application "System Events" to tell appearance preferences to set dark mode to false')
        drawObj:hide()
    end
end, true)
brightTimer:start()

小结

本文介绍了三种根据屏幕亮度切换外观模式的方法。对于普通用户,推荐使用软件 Dynamic Dark Mode。喜欢自己折腾的用户,可以选择使用 Keyboard Maestro 或者 Hammerspoon 脚本来实现同样的功能。

Leave A Reply

Your email address will not be published.


Copyright © 2019~2020 麦客资源网 (www.macbooks.cn)鄂公网安备 42018502004215号 鄂ICP备19005523号-2
联系我们:baronor@126.com | QQ:350791597(请备注麦客资源网网用户)