Color Management on Linux desktop.
Linux支援色彩管理,但是沒有全域,要看應用程式支援度。Firefox、Chromium系瀏覽器、GIMP、Krita、CUPS印表機是支援色彩管理的,看圖軟體Gwenview也支援讀取內嵌ICC設定檔的圖片。
通常色彩管理會用到描述色彩轉換情況的ICC設定檔(ICC Profiles),附檔名為.icm。
那麼本文Ivon就來討論如何於Linux使用ICC。
1. 前置條件#
Linux的色彩管理支援度取決於你使用的桌面環境。
撰文當下,GNOME最新版本47、KDE Plasma最新版本6.2.5
要使用色彩管理請使用X11協定。如何確認目前的桌面工作階段為X11還是Wayland?輸入指令echo $XDG_SESSION_TYPE
確認。
Wayland協定的色彩管理不成熟,若使用Wayland可能導致螢幕顏色錯亂。
未來Wayland有望實現全域色彩管理,請看這篇2023年9月23日的新聞:Wayland Color Management Protocol Posted For Weston。但即使Wayland的新色彩管理協定草案已經送出,目前各大桌面環境僅有KDE Plasma 6採用。
2. 取得ICC設定檔#
試試使用現有ICC檔案。可以從Windows系統得到.icm檔案,資料夾位於C:\Windows\System32\spool\drivers\color
順帶一提NotebookCheck網站在寫評測的時候也會附上他們校色過的.icm檔供下載,特別適合筆電用戶參考。
如果要絕對準確度,就是在Linux下進行校色了。DisplayCAL有Linux版,可以搭配校色器使用,藉此產生準確的ICC設定檔。
3. 載入ICC設定檔#
ICC設定檔以.icm
結尾,請放到/usr/local/share/color/icc
sudo cp /home/user/N156HCE.icm /usr/local/share/color/icc
Linux的ICC設定檔是交由桌面環境的常駐程式載入
比如GNOME要安裝gnome-color-manager
套件,才能在系統設定調整螢幕的ICC設定檔。
KDE Plasma為kde-colord
套件,這樣子在桌面環境系統設定的「色彩管理」介面就可以調整螢幕的ICC設定檔。KDE Plasma 6以後也可以在系統設定 → 顯示器,選取ICC設定檔。
此外,如果Linux使用Nvidia閉源驅動,則Nvidia X Server Settings裡面可以調整色彩空間,確保螢幕顏色準確。
其他桌面環境調整請使用xcalib
載入ICC設定檔。
如果系統選單無法讓你挑icc檔案,就用colormgr
指令改。colormgr隨附於colord
套件。
使用colormgr指令列出螢幕ID
colormgr get-devices
列出可用ICC設定檔ID。ID為一長串英數組合
colormgr get-profiles
再給螢幕新增ICC設定檔
colormgr device-add-profile "xrandr-Chimei Innolux Corporation" "icc-0e818279fc2a0a06ba8adb7c1b11b37d"
然後設定該ICC設定檔為預設
colormgr device-make-profile-default "xrandr-Chimei Innolux Corporation" "icc-0e818279fc2a0a06ba8adb7c1b11b37d"
4. 附註:調整螢幕色溫、Gamma值、對比度#
GNOME系統設定裡面有「夜間模式」能夠調整色溫。
KDE的系統設定裡面也有Gamma與RGB顏色的調整選項。
如果Linux使用Nvidia閉源驅動,則Nvidia X Server Settings裡面也可以調螢幕的亮度與對比度。
Redshift工具可以調整色溫,從1000K到25000K都有,還有隨地理位置自動調整達成夜間光線的效果。
redshift -P -O 5500
xrandr工具包辦了對比度、Gamma值、亮度、RGB動態範圍的設定。
# 列出螢幕
xrandr --current
# 調整eDP-1螢幕的Gamma值與亮度
xrandr --output eDP-1 --gamma 1:1:1 --brightness 1.0
# 調整RGB動態範圍
xrandr --output eDP-1 --set "Broadcast RGB" "Full"