How to enable dark mode on Linux Desktop and switch between light mode and dark mode depending on the time.
討論Linux桌面啟用深色模式(暗黑模式)的方式,並設定自動依照電腦的時間切換深色桌布。適用Ubuntu、Fedora、Arch Linux等發行版。
GIF示意圖。桌布來源
Android手機和iPhone都有依照時間自動切換為深色模式的功能,Linux也有,但要看桌面環境支援不支援。
開啟深色模式這有什麼好處呢?對部份人來說,開啟深色模式有顧眼睛的效果,儘管有醫生說眼睛反而會更累就是了。
在搭載OLED螢幕的Linux筆電啟用深色模式可能有助於省電。
Linux要什麼深色模式?開機時的tty不就是最古老的深色模式了嗎?
需注意「深色模式」不等於「夜間模式」,後者是調整螢幕顏色,透過所謂夜間光線或者灰階螢幕,讓畫面看起來比較暖和。本文會一併附上Linux開啟夜間模式的方式。
1. 桌面環境切換深色模式#
理想上應該是在桌面環境的選單全域調整後,Linux目前工作階段所開啟的程式就會跟著進入深色模式。但有的程式調皮不跟著走,就得手動處理。
因為不是所有主題都支援淺色與深色模式,我們儘量利用桌面環境內建的深色模式功能,不額外安裝「黑色風格」的主題。
GNOME預設的Adwaita主題提供淺色與深色版本,開啟系統設定 → 外觀切換。
KDE Plasma內建的Breeze主題有淺色與深色版。開啟系統與設定 → 全域主題切換。其中「Breeze Twilight」是工作列深色模式,但視窗保持淺色模式。
2. 桌布跟著深色模式變色#
GNOME與KDE Plasma內建桌布提供淺色模式與深色模式(部份,看桌布有無顯示對比縮圖),切換到深色模式的時候就會自動變成深色的版本。
如果要給你自己新增的桌布設定「深色版」圖片的話,要手動放置檔案。或者你可以交給第三方程式來自動切換桌布。
GNOME#
- 在
~/.local/share/backgrounds
新增自訂目錄,結構如下:
~/.local/share/backgrounds
├── custom
│ ├── image-dark.png --> 命名隨意,只是為了方便辨識
│ └── image.png --> 命名隨意,只是為了方便辨識
然後,在
~/.local/share/gnome-background-properties/
,新增桌布的註冊資訊,例如custom.xml
參考
/usr/share/backgrounds/
其他桌布的格式撰寫xml,填入桌布的路徑:
<?xml version="1.0"?>
<!DOCTYPE wallpapers SYSTEM "gnome-wp-list.dtd">
<wallpapers>
<wallpaper deleted="false">
<name>Custom Wallpaper</name>
<filename>/home/user/.local/share/backgrounds/custom/image.png</filename>
<filename-dark>/home/user/.local/share/backgrounds/custom/image-dark.png</filename-dark>
<options>zoom</options>
<shade_type>solid</shade_type>
<pcolor>#ffffff</pcolor>
<scolor>#000000</scolor>
</wallpaper>
</wallpapers>
- 這樣GNOME系統設定的桌布選單便會出現淺色與深色版桌布。
KDE Plasma#
- 在
~/.local/share/wallpapers
新增自訂目錄,結構如下:
~/.local/share/wallpapers
├── custom
├── contents
│ ├── images --> 放入淺色版圖片
│ │ └── 1920x1080.png --> 圖片必須以解析度命名
│ └── images_dark --> 放入深色版圖片
│ └── 1920x1080.png --> 圖片必須以解析度命名
└── metadata.json --> 註冊桌布資訊
- 編輯
metadata.json
,參考/usr/share/wallpapers/
目錄其他桌布的格式填寫桌布資訊:
{
"KPlugin": {
"Authors": [
{
"Email": "",
"Name": "Custom"
}
],
"Id": "Next",
"License": "CC-BY-SA-4.0",
"Name": "Custom"
}
}
- 這樣KDE Plasma的桌布選擇界面才會出現淺色與深色版本。
3. 個別應用程式切換深色#
GTK 4以上程式應該會跟著桌面環境設定自動變色,不然就用GTK_THEME=Adwaita:dark
的環境變數強制使用深色模式主題。
QT 6亦同。可以用環境變數QT_QPA_PLATFORMTHEME=qt6ct
指定主題,再透過qc6ct程式強制指定主題。
Firefox和Chromium系列瀏覽器會自動跟著桌面環境設定變色。
支援深色模式的網頁應該也會跟著變色,包括你現在正在觀看的這個部落格。如果要強制網頁變深色,請安裝Dark Reader擴充套件
有些程式的主題顏色是固定的,比如Visual Studio Code,需要手動在設定頁面開啟「Auto Detect Color Scheme」:
4. 定時自動切換深色模式#
GNOME 47和KDE Plasma 6都尚未支援此功能,需要安裝第三方軟體。
推薦使用baduhai開發的Koi,它可以定時調整GTK與QT主題的顏色,也能夠定時切換桌布。
先在Preferences頁面設定切換的主題。
將Koi加入到登入桌面環境後自動啟動。
回到主畫面,勾選Automatic。點選Time Schedule,設定切換為淺色模式與深色模式的時間點。
5. 開啟夜間模式,調整螢幕色溫#
GNOME:開啟系統設定 → 顯示器 → 夜光模式。如果需要灰階模式,請安裝Bedtime Mode擴充套件。
KDE Plasma:系統設定 → 主題 → 夜光模式。
需要灰階模式,請到系統設定 → 視窗管理 → 桌面效果,安裝KWin Grayscale Effect。