How to control your external display brightness on macOS and Arch Linux
Preface
在筆記型電腦上基本上都會內建功能提供調整螢幕亮度(Brightness)。倘若電腦使用了外接螢幕,一般來說僅能透過外接螢幕功能鍵進行調整,而沒辦法使用內建螢幕功能調整外接螢幕。
有沒有辦法透過在筆記型電腦上直接控制外接螢幕的亮度及音量大小呢?
DDC/CI
首先,在作業系統上是否有相關界面可以對外接螢幕進操作。根據 Wiki,2016 年後螢幕多數都已經支援了 Display Data Channel Command Interface(DDC/CI) [1]:提供了由電腦與螢幕顯示溝通的訊號界面,並可以透過軟體定義調整外接螢幕亮度。
macOS
在 macOS 環境中,使用 MonitorControl [2] 來調整外接螢幕亮度。以下使用外接螢幕 LG 32ML600M 測試,可以觀察到外接螢幕音軌進行調整。
此外,macOS 系統已經提供內建螢幕及外接螢幕明亮,於 MonitorControl 4.0.0 [3] 後提供了同步內建螢幕與外接螢幕亮度功能。
當然,需要注意若習慣將 macbook 關閉上蓋,環境光度感測器(ambient light sensor)就不會自動感測而變化外接螢幕亮度。
Linux - Arch Linux
Linux 環境則可以使用 i2c-dev [4] 或 ddcci-driver-linux [5] 整合。
- i2c-dev :原生 kernel 已經支援,僅需要設定
/etc/modules-load.d
使 kernel 開機時載入即可,參考 ddcutil kernel module 設置 [6]。
最終目的希望透過桌面環境調整外接螢幕,以下為我的 Arch Linux 環境資訊:
$ uname -a
Linux nuc-arch 5.16.14-arch1-1 #1 SMP PREEMPT Fri, 11 Mar 2022 17:40:36 +0000 x86_64 GNU/Linux
$ plasmashell -v
plasmashell 5.24.3
$ kf5-config --version
Qt: 5.15.3
KDE Frameworks: 5.92.0
kf5-config: 1.0
由於使用了 Arch Linux KDE Plasma 環境中整合,其 Plasma PowerDevil [7] module 提供電源管理控制,其包含螢幕亮度及裝置電源等。
不過目前 PowerDevil 套件預設 [8] 將 ddcutil
(-DHAVE_DDCUTIL=Off
)關閉,故需要手動編譯啟用 ddcutil
功能。
當然 Arch user 維護了 powerdevil-ddcutil AUR [9] 提供大家使用:
$ sudo gpasswd -a $USER i2c
$ sudo sh -c 'echo i2c-dev > /etc/modules-load.d/ddc.conf'
$ sudo reboot
重起後,KDE Plasma 順利地直接調整外接螢幕: