每天長時間盯著電腦,這三招幫你緩解眼睛疲勞

macOS Mojave 引入的全局深色模式帶來了更好的用戶體驗。緊接著,各路開發者和極客用戶就圍繞這一功能實現了各種各樣的擴展與自動化,將用戶體驗向前推進一步,主要包括:

  • 根據時間切換外觀模式,如 NightOwl
  • 隨日出 / 日落切換外觀模式,同上
  • 將夜覽(夜間模式)與外觀模式結合,如 Flux 或 thompsonate/Shifty
  • 指定各個 App 是否使用深色模式,如 Gray

(以上軟件在文末附上的少數派網站文章中均有介紹)

但是隨著使用,我覺得這些應用提供的功能並不夠完善。無論是按照時間,還是按照日出 / 日落切換,都無法與使用者所處環境中的光線變化步調一致。畢竟多數情況下,我們處於室內,而且會通過開關燈調節環境亮度。

所以,我更希望實現的自動化切換是,配合 MacBook 搭載的環境光傳感器,在外界光線變化時自動調節屏幕亮度並切換淺色 / 深色模式,我認為這樣才是更加完善和符合使用邏輯的方式。此外,對於沒有環境光傳感器的 iMac 和 Mac mini 用戶,在使用快捷鍵等方式調節屏幕亮度時,自動切換外觀模式也是不錯的。

首先,我們需要啟用環境光傳感器:打開「系統偏好設定 → 顯示器」,勾選 自動調節亮度。如果找不到這個選項,那就說明你的設備不支持這個功能。

每天長時間盯著電腦,這三招幫你緩解眼睛疲勞

自動調節屏幕亮度

本文將介紹三種開啟「在外界光線變化時自動調節屏幕亮度並切換淺色 / 深色模式」功能的途徑:一個 App,以及 Keyboard Maestro 和 Hammerspoon 各一個腳本。

Dynamic Dark Mode

這是由 ApolloZhu 開發的開源免費 App,點擊打開他的 Github 項目頁面。我們可以到 GitHub 項目頁面中 手動下載,也可以使用 Homebrew 安裝:

brew cask install dynamic-dark-mode

如果你對 Homebrew 不瞭解,可以瀏覽少數派網站的專題:Homebrew,Mac 應用管家

第一次啟動 App,會出現一個配置引導界面,點擊「開始配置 >>」後,依次授予自動化和地理位置權限。其中自動化權限是為了控制外觀模式,地理位置則是為了計算日出/日落時間,當然,你也可以拒絕地理位置權限的授予。

每天長時間盯著電腦,這三招幫你緩解眼睛疲勞

結束配置後,偏好設置窗口會自動打開。我們可以看到,這裡有切換快捷鍵、根據屏幕亮度或時間切換、菜單欄圖標功能等選項,根據自己的需要進行勾選。此外,我們還可以在菜單欄圖標的下拉菜單中進行手動切換。

每天長時間盯著電腦,這三招幫你緩解眼睛疲勞

偏好設置

所以,藉助這個 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 編輯界面。

每天長時間盯著電腦,這三招幫你緩解眼睛疲勞

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 腳本來實現同樣的功能。作者還寫了一篇開發歷程文章,感興趣可以看看:

少數派網站還有幾篇深色模式的相關文章,點擊瀏覽:


分享到:


相關文章: