Simple Desktop Display Manager (SDDM) 是一個顯示管理器。它是 KDE Plasma 和 LXQt 桌面環境推薦的顯示管理器。
Wikipedia:Simple Desktop Display Manager 介紹:
- Simple Desktop Display Manager (SDDM) 是用於 X11 和 Wayland 視窗系統的顯示管理器(圖形登錄程序與會話管理器)。SDDM 使用 C++11 從頭編寫並支持通過 QML 改變主題。
KDE 開發團隊已接受了將 SDDM 項目整合到 Plasma 桌面項目中的 issue。SDDM 將成為 Plasma 的官方組成部分,並且其更新可能會與 Plasma 桌面更新一起推出。
安裝
安裝 sddm包。對於 KConfig Module,可選安裝 sddm-kcm包。對於 qt5 主題支持,請安裝 qt5-declarative包。
然後根據顯示管理器#加載顯示管理器的說明配置 SDDM 在系統引導時啟動。
配置
SDDM 的默認配置文件為 /usr/lib/sddm/sddm.conf.d/default.conf
。要修改配置,請在 /etc/sddm.conf.d/
目錄下創建配置文件。詳見 sddm.conf(5) 以獲得所有配置選項。
sddm-kcm包 軟體包 (包含在 plasma包組 用戶組) 提供了一個圖形用戶界面以在 Plasma 系統設置中配置 SDDM。AUR 中也有基於 Qt 的配置軟體 sddm-conf-gitAUR。
一切東西都應該開箱即用,自從 Arch Linux 使用 systemd 後,SDDM 默認使用 systemd-logind
以進行會話管理。
自動登錄
SDDM 通過它的配置文件來支持自動登錄,例如:
/etc/sddm.conf.d/autologin.conf
[Autologin] User=john Session=plasma
此配置使得在系統啟動後自動以用戶 john
開啟一個 KDE Plasma 會話。X 的會話類型位於 /usr/share/xsessions/
, wayland 的會話類型位於 /usr/share/wayland-sessions/
。
要在登錄 KDE Plasma 的同時鎖定會話,請參閱 KDE#鎖屏。
無密碼登錄
可以配置 SDDM 以允許在不需要密碼的情況下登錄到某些帳戶。與自動登錄不同,用戶仍需要選擇要登錄的帳戶,並且它與簡單地將帳戶密碼設置為空字符串不同,因為它只允許交互式用戶登錄(而不是,例如,通過 SSH 遠程登錄的用戶)。
SDDM 通過 PAM 運行,因此您必須配置 PAM 的 SDDM 配置:
/etc/pam.d/sddm
#%PAM-1.0 auth sufficient pam_succeed_if.so user ingroup nopasswdlogin auth include system-login ...
也是為了能在沒有密碼的情況下解鎖 KDE Plasma 鎖屏,同樣在/etc/pam.d/kde
文件的頂部添加相同的行:
/etc/pam.d/kde
#%PAM-1.0 auth sufficient pam_succeed_if.so user ingroup nopasswdlogin auth include system-login ...
然後,只有nopasswdlogin
組的成員,才能在不輸入密碼的情況下交互式登錄:
# groupadd -r nopasswdlogin
# gpasswd -a username nopasswdlogin
登錄後自動解鎖 KDE Wallet
詳見 KDE Wallet#在登錄時自動解鎖 Kwallet。
主題設置
在 [Theme]
小節更改主題設置。如果您使用 Plasma 的系統設置,主題可能會顯示預覽。
設置 breeze
以獲得 Plasma 默認主題。
AUR 有一些可用的主題,例如 archlinux-themes-sddmAUR。
當前主題
通過 Current
的值設置當前主題,例如 Current=archlinux-simplyblack
。
創建主題
默認 SDDM 主題目錄為 /usr/share/sddm/themes/
。你可以添加你的自製主題到該目錄下一個單獨的子目錄中。注意 SDDM 要求這些子目錄的名字要與主題的名字一致。可以通過研究已安裝的文件來更改或創建屬於你的主題。
自定義主題
要覆蓋 theme.conf
配置文件中的設置,在相同目錄下創建一個自定義的 theme.conf.user
文件。例如,要更改主題的背景:
/usr/share/sddm/themes/name/theme.conf.user
[General] background=/path/to/background.png
測試(預覽)主題
如果需要,你可以預覽一個 SDDM 主題。如果你想知道一個主題看起來怎麼樣,或是想要編輯一個主題後在不必登出的情況下觀察改動的效果,那麼這將會非常有用。你可以運行下面的命令:
$ sddm-greeter-qt6 --test-mode --theme /usr/share/sddm/themes/breeze
這應該為所有已連接的顯示器打開一個新窗口以顯示主題的預覽。
滑鼠光標
要設置滑鼠光標的主題,將 CursorTheme
設置成您喜歡的光標主題。
合法的 Plasma 滑鼠光標主題有 breeze_cursors
,Breeze_Snow
和 breeze-dark
。
用戶圖標(頭像)
SDDM 對於每個用戶從相應的 ~/.face.icon
目錄下讀取 PNG 圖片格式的用戶圖標(即「頭像」),或者從 SDDM 配置文件中由 FacesDir
為所有用戶定義的共有位置。配置設置可以通過修改 /etc/sddm.conf
文件被直接替換,更好的方法是創建一個位於 /etc/sddm.conf.d/
下的文件來修改,例如 /etc/sddm.conf.d/avatar.conf
。
要使用 FacesDir
選項來確定頭像位置,即在配置文件中 FacesDir
所確定的位置為每一個用戶放置一個 PNG 圖片,命名如 username.face.icon
。FacesDir
默認的路徑為 /usr/share/sddm/faces/
。你可以更改默認 FacesDir
目錄以合乎你的要求。下面是一個例子:
/etc/sddm.conf.d/avatar.conf
[Theme] FacesDir=/var/lib/AccountsService/icons/
另一個選項是放置一個名為 .face.icon
的 PNG 圖片到你的家目錄下。在這種情況下,您不用對任何 SDDM 配置文件進行更改。不過,您仍需確定 sddm
用戶可以讀取這些 PNG 圖片作為用戶圖標。
~/.face
而 ~/.face.icon
是連結到圖像文件的符號連結。如果用戶的圖標是符號連結,你需要為目標文件設置恰當的文件權限。為了設置合適權限運行:
$ setfacl -m u:sddm:x ~/ $ setfacl -m u:sddm:r ~/.face.icon
你可以通過運行下列命令檢查權限:
$ getfacl ~/ $ getfacl ~/.face.icon
數字鎖
如果你想強制啟用數字鎖,在 [General]
小節設置 Numlock=on
。
如果 SDDM 在 Wayland 下運行,當前 NumLock 設置不起作用。您可能需要更改 KWin 設置以啟用它,請參閱此 issue
旋轉顯示
DPI 設置
有時位於「顯示管理器」級別設置正確的顯示器 DPI 是很有用的。[1] 你需要在 ServerArguments
字符串的末尾加上參數 -dpi your_dpi
例如:
/etc/sddm.conf.d/dpi.conf
[X11] ServerArguments=-nolisten tcp -dpi 94
啟用 HiDPI
創建 HiDPI 配置文件如下:
/etc/sddm.conf.d/hidpi.conf
[Wayland] EnableHiDPI=true [X11] EnableHiDPI=true
當使用 Wayland 時,HiDPI 縮放取決於所使用的問候程序。[2] 例如,當使用基於 Qt 的問候程序(如 Breeze)時,請添加以下配置:
[General] GreeterEnvironment=QT_SCREEN_SCALE_FACTORS=2,QT_FONT_DPI=192
啟用虛擬鍵盤
安裝 qt6-virtualkeyboard包 或你希望的其他虛擬鍵盤,創建如下文件:
/etc/sddm.conf.d/virtualkbd.conf
[General] InputMethod=您使用的虛擬鍵盤名稱
SDDM 在登錄屏幕的左下角會顯示一個虛擬鍵盤圖標。
使用指紋識別器
kscreenlocker
已經包含了所需的 /etc/pam.d/kde-fingerprint
。
然而,該配置不包括登錄,只包括解鎖現有會話。
因為 KWallet 在登錄時需要基於密碼的認證(見下文),您可能仍然希望跳過 SDDM 的指紋設置。
SDDM 使用 fprint 以使用指紋識別。在安裝了 fprint 和添加指紋簽名後,在 /etc/pam.d/sddm
的頂部添加:
/etc/pam.d/sddm
auth sufficient pam_fprintd.so
為了同時使用密碼或指紋解鎖,您可以在文件頂部添加以下內容:
/etc/pam.d/sddm
auth [success=1 new_authtok_reqd=1 default=ignore] pam_unix.so try_first_pass likeauth nullok auth sufficient pam_fprintd.so
請注意,KWallet不能使用指紋讀取器解鎖(見 KDE Wallet#在登錄時自動解鎖 Kwallet),但第一行確保了使用密碼登錄將自動解鎖 KWallet。
如果您現在在空密碼欄位中按回車,指紋讀取器應該開始工作。
無根模式
傳統上,Xorg 顯示伺服器默認以 root 權限運行。這種有根模式允許 Xorg 無限制地訪問系統資源,這在直接硬體訪問和管理常見的環境中是必要的。然而,隨著現代計算環境中對安全性的日益重視,人們已經努力轉向無根模式,這也是 Wayland 默認以無根模式運行的原因。
自 sddm包 0.20.0 以來,支持啟動非特權 X11(和 Wayland)會話。[3]
要啟用無根模式:在 /etc/sddm.conf.d/
下創建一個新的配置文件,給它一個有意義的名字,並添加以下內容,如果需要,將 x11-user
替換為 wayland
。
/etc/sddm.conf.d/rootless-x11.conf
[General] DisplayServer=x11-user
要確認您是否正在以無根模式運行,請檢查哪個用戶擁有compositor 進程的所有權(例如 kwin_wayland
)
- SDDM 將其對 Wayland 的支持視為實驗性的。
- 默認情況下
DisplayServer=wayland
嘗試使用 weston 混成器,即便它沒有安裝,要使用不同的 Wayland 混成器,請按照 #KDE Plasma / KWin 中的描述將程序和相關參數輸入到CompositorCommand
選項中,也請參考 sddm.conf(5) 了解更多。
Wayland
KDE Plasma / KWin
--no-global-shortcuts
可以解決這個問題。[4]
將以下行添加到您的配置文件中,將 Wayland 混成器設置為 KWin 並啟用 wlr_layer_shell Wayland 協議擴展。使用 Qt5 和 Qt6 的 SDDM 主題分別需要 layer-shell-qt包 和 layer-shell-qt5包。
/etc/sddm.conf.d/10-wayland.conf
[General] DisplayServer=wayland GreeterEnvironment=QT_WAYLAND_SHELL_INTEGRATION=layer-shell [Wayland] CompositorCommand=kwin_wayland --drm --no-lockscreen --no-global-shortcuts --locale1
虛擬鍵盤
要啟用虛擬鍵盤支持(例如使用 qt6-virtualkeyboard包 或 maliit-keyboard包),請在 kwin_wayland
命令中追加 --inputmethod
標誌和適當的虛擬鍵盤,如下所示。不要在 General
部分設置 InputMethod
選項,因為這將導致虛擬鍵盤不再顯示。
/etc/sddm.conf.d/10-wayland.conf
[Wayland] CompositorCommand=kwin_wayland --drm --no-lockscreen --no-global-shortcuts --locale1 --inputmethod maliit-keyboard
匹配 Plasma 顯示配置
在 Plasma Wayland 會話中對顯示配置所做的更改(例如監視器布局、解析度等)將不會保留到 SDDM。要使它們保留,請打開 Plasma 的系統設置,導航到顏色和主題>登錄屏幕 (SDDM) ,然後點擊右上應用 Plasma 設置...。您需要有執行此操作的權限。
也可以手動完成同樣的操作:
要啟用 SDDM 中正確的顯示和監視器處理(縮放、監視器解析度、刷新率等),您可以從您的主目錄複製或修改適當的配置文件到 SDDM 的目錄:
# cp ~/.config/kwinoutputconfig.json /var/lib/sddm/.config/
# chown sddm:sddm /var/lib/sddm/.config/kwinoutputconfig.json
同時要啟用 SDDM 中正確的輸入處理(點擊觸控、觸控螢幕映射等),您可以從您的主目錄複製適當的配置文件到 SDDM 的目錄:
# cp ~/.config/kcminputrc /var/lib/sddm/.config/
# chown sddm:sddm /var/lib/sddm/.config/kcminputrc
界面中文化
按照安裝指南#區域和本地化設置設置完 LOCALE 後,SDDM 界面依然會顯示為英文。欲顯示中文,請修改 sddm.service
,在 [service]
節中設置環境:
/usr/lib/systemd/system/sddm.service
[Service] Environment=LANG=zh_CN.UTF-8
然後重啟即可。
故障排除
只有空白屏幕和光標,但沒有歡迎界面
如果沒有足夠的空間,歡迎界面會崩潰。使用 df -h
命令檢查您的磁碟空間。
如果磁碟空間足夠,那麼這個問題可能源於此 bug。切換到另一個 TTY,並嘗試loginctl unlock-session session_id
或重啟 SDDM。
登錄後掛起
嘗試移除 ~/.Xauthority
文件後不重啟再次登入。重啟會再次創建該文件即該問題依舊存在。
SDDM 在 tty1 啟動而不是 tty7
SDDM 根據 systemd 的規定在 tty1 啟動圖形會話。
請注意,配置文件仍然有 MinimumVT
選項,但自 SDDM 版本 0.20 起已被忽略:sddm.conf(5) § MinimumVT=。
一個或多個用戶沒有出現在歡迎界面
默認情況下,SDDM 配置為僅顯示 UID 在 1000 到 60513 範圍內的用戶。如果所需用戶的 UID 在此範圍之外,則需要修改該範圍。
例如,對於 UID 為 501 的用戶,設置 MinimumUid
並隱藏那些使用系統用戶 shell 的用戶:
/etc/sddm.conf.d/uid.conf
[Users] HideShells=/usr/bin/nologin,/sbin/nologin,/bin/false,/usr/bin/git-shell MinimumUid=500
對於具有過大 UID 的用戶,將 MaximumUid
設置為適當的值。
用戶頭像未顯示在歡迎界面上
如果用戶數量超過 DisableAvatarsThreshold
參數設定的數量,或者 EnableAvatars
參數根本沒有啟用,那麼在歡迎界面上將不會顯示用戶頭像。要解決這個問題,請在您的 SDDM 配置中添加以下幾行:
/etc/sddm.conf.d/avatars.conf
[Theme] EnableAvatars=true # enable avatars DisableAvatarsThreshold=7 # set the threshold for the number of users. Avatars are not shown if this threshold is exceeded.
SDDM 只加載 US 鍵盤布局
SDDM 加載的鍵盤布局被確定在 /etc/X11/xorg.conf.d/00-keyboard.conf
文件中。您可以通過 localectl set-x11-keymap
命令以生成此配置文件。詳見 Xorg/鍵盤設置。
設置僅在 SDDM 中設置而不在後續會話中設置的鍵盤布局的另一種方法是在 SDDM 的啟動腳本(位於 /usr/share/sddm/scripts/Xsetup
)中調用 setxkbmap 命令。有關示例,請參見Xorg/鍵盤設置#使用 setxkbmap。
SDDM 可能也會錯誤地顯示為 US 布局,但在您開始輸入您的密碼時立即切換到正確的鍵盤布局 [5]。此 bug 看起來不是來自 SDDM,而是 Xorg。[6]
屏幕解析度過低
此問題可能源於顯示屏 HiDPI 的使用破壞了 EDID [7]。如果你啟動了 HiDPI,嘗試關掉它。
如果上述方法失敗了,您可以嘗試在 Xorg 配置文件中設置您的顯示尺寸:
/etc/X11/xorg.conf.d/90-monitor.conf
Section "Monitor" Identifier "<default monitor>" DisplaySize 345 194 # in millimeters EndSection
自動掛載家目錄的加載時間過長
SDDM 默認會訪問 ~/.face.icon
文件以嘗試顯示用戶頭像。如果您的家目錄採用自動掛載的文件系統(autofs),例如如果您使用 dm-crypt,這將會使之等待 60 秒,直到自動掛載的文件系統(autofs)返回此目錄不能被掛載。
您可以通過創建以下文件關閉頭像功能:
/etc/sddm.conf.d/avatar.conf
[Theme] EnableAvatars=false
X authority(也稱為 MIT-MAGIC-COOKIE)文件
SDDM 使用一個隨機的新鮮 UUID 作為認證文件,詳情見 [8]。因此,要找到該文件,可以使用一個腳本來查找:
# find /var/run/sddm/ -type f
如果需要在沒有用戶登錄時啟動 x11vnc,可能需要這個文件。例如:
# x11vnc -display :0 -auth "$( find /var/run/sddm/ -type f )"
多屏幕設置上的重疊歡迎界面
在多屏幕設置上,X 監視器布局可能沒有正確設置,導致歡迎界面重疊。要解決這個問題,添加以下幾行來從左到右排序您的 SDDM 問候者布局:
/usr/share/sddm/scripts/Xsetup
for next in $(xrandr --listmonitors | grep -E " *[0-9]+:.*" | cut -d" " -f6); do [ -z "$current" ] && current=$next && continue xrandr --output $current --auto --output $next --auto --right-of $current current=$next done
登錄會話出現在意外的顯示設備上
如果連接了多個顯示設備,SDDM 登錄會話可能會出現在與您的主顯示設備不同的顯示設備上。如果次要顯示設備旋轉了而主顯示設備沒有,這個問題可能會很煩人。一個簡單的解決方法是在登錄會話使用 Xsetup
腳本之前使用 xrandr
配置顯示設備。例如,這裡 xrandr
報告有兩個已連接的顯示設備,其中次要顯示設備(DP-2)位於主顯示設備(DP-4)的左側。
# xrandr | grep -w connected
DP-2 connected 2160x3840+0+0 left (normal left inverted right x axis y axis) 597mm x 336mm
DP-4 connected primary 3840x2160+2160+0 (normal left inverted right x axis y axis) 697mm x 392mm
以下 Xsetup
重新創建了登錄窗口的上述設置:
/usr/share/sddm/scripts/Xsetup
#!/bin/sh # Xsetup - 在登錄對話框出現之前作為 root 運行 xrandr --output DP-4 --auto --primary xrandr --output DP-2 --left-of DP-4 --rotate left --noprimary
使用 NVIDIA 顯卡註銷後黑屏
用戶註銷後可能會遇到完全黑屏或只有光標/顯示設備徽標顯示在屏幕上。這是因為 sddm.service
比 NVIDIA 驅動程序啟動得更快。考慮使用 early KMS。
在 Wayland 上使用混合圖形時屏幕不同步
如果您設置 SDDM 使用 kwin_wayland
合成器,啟動時可能會遇到屏幕不同步的問題。如果返回到 X11 工作正常,並且您正在使用 mesa-amber
驅動程序,那麼通過用 mesa
替換當前的 mesa-amber
驅動程序,Wayland 很可能會正常工作。您可以在 KDE Bug 483804 查看有關此問題的更多細節。
部分主題崩潰
部分 SDDM 沒有在 metadata.desktop
中指定 QtVersion
, 導致 SDDM 以不兼容的歡迎界面啟動(Qt5 而不是 Qt6)。
若您設定了自定義主題,但重啟後顯示默認主題並報錯 Library import requires a version
,您需要將 QtVersion=6
添加到 /usr/share/sddm/themes/主題名稱/metadata.desktop
。