出自 Arch Linux 中文维基

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 0.20 版本,Wayland 會話能夠被列出,並可從 SDDM 啟動,但 SDDM 登錄界面本身默認仍在 X11 模式下運行,不過可以啟用試驗性的 Wayland 登錄界面。

安裝

安裝 sddm 軟體包。對於 KConfig Module,可選安裝 sddm-kcm 軟體包。

然後根據顯示管理器#加載顯示管理器的說明配置 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 的同時鎖定會話。[1]

你可以添加一個腳本,在 Plasma 自動啟動時激活屏幕保護程序以作為一個解決方案:

#!/bin/sh
/usr/bin/dbus-send --session --type=method_call --dest=org.freedesktop.ScreenSaver /ScreenSaver org.freedesktop.ScreenSaver.Lock &

無密碼登錄

可以配置 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_cursorsBreeze_Snowbreeze-dark

用戶圖標(頭像)

本文內容或本節內容已經過期。

原因: SDDM 現在無需配置即可檢測到 /var/lib/AccountsService/icons/ 中的圖標,而 Plasma 不再在 $HOME/ 中創建文件。 (在Talk:SDDM討論)

SDDM 對於每個用戶從相應的 ~/.face.icon 目錄下讀取 PNG 圖片格式的用戶圖標(即「頭像」),或者從 SDDM 配置文件中由 FacesDir 為所有用戶定義的共有位置。配置設置可以通過修改 /etc/sddm.conf 文件被直接替換,更好的方法是創建一個位於 /etc/sddm.conf.d/ 下的文件來修改,例如 /etc/sddm.conf.d/avatar.conf

要使用 FacesDir 選項來確定頭像位置,即在配置文件中 FacesDir 所確定的位置為每一個用戶放置一個 PNG 圖片,命名如 username.face.iconFacesDir 默認的路徑為 /usr/share/sddm/faces/。你可以更改默認 FacesDir 目錄以合乎你的要求。下面是一個例子:

/etc/sddm.conf.d/avatar.conf
[Theme]
FacesDir=/var/lib/AccountsService/icons/

另一個選項是放置一個名為 .face.icon 的 PNG 圖片到你的家目錄下。在這種情況下,您不用對任何 SDDM 配置文件進行更改。不過,您仍需確定 sddm 用戶可以讀取這些 PNG 圖片作為用戶圖標。

注意: 在許多 KDE 的版本中,用戶圖標圖像文件是 ~/.face~/.face.icon 是連結到圖像文件的符號連結。如果用戶的圖標是符號連結,你需要為目標文件設置恰當的文件權限。

為了設置合適權限運行:

$ setfacl -m u:sddm:x ~/
$ setfacl -m u:sddm:r ~/.face.icon

你可以通過運行下列命令檢查權限

$ getfacl ~/
$ getfacl ~/.face.icon

詳見 SDDM README: No User Icon

數字鎖

如果你想強制啟用數字鎖,在 [General] 小節設置 Numlock=on

如果 SDDM 在 Wayland 下運行,當前 NumLock 設置不起作用。您可能需要更改 KWin 設置以啟用它,請參閱此 issue

旋轉顯示

詳見 Xrandr#Configuration

DPI 設置

有時位於「顯示管理器」級別設置正確的顯示器 DPI 是很有用的。[2] 你需要在 ServerArguments 字符串的末尾加上參數 -dpi your_dpi 例如:

/etc/sddm.conf.d/dpi.conf
[X11]
ServerArguments=-nolisten tcp -dpi 94

啟用 HiDPI

注意: 自 SDDM 0.20.0 起,默認啟用了 HiDPI 支持,以下步驟不再必要。

創建 HiDPI 配置文件如下:

/etc/sddm.conf.d/hidpi.conf
[Wayland]
EnableHiDPI=true

[X11]
EnableHiDPI=true

當使用 Wayland 時,HiDPI 縮放取決於所使用的問候程序。[3] 例如,當使用基於 Qt 的問候程序(如 Breeze)時,請添加以下配置:

[General]

GreeterEnvironment=QT_SCREEN_SCALE_FACTORS=2,QT_FONT_DPI=192

啟用虛擬鍵盤

安裝 qt6-virtualkeyboard 或你希望的其他虛擬鍵盤,創建如下文件:

/etc/sddm.conf.d/virtualkbd.conf
[General]
InputMethod=qtvirtualkeyboard

SDDM 在登錄屏幕的左下角會顯示一個虛擬鍵盤圖標。

使用指紋識別器

提示:自 Plasma 6 發布以來,KDE 的鎖屏應該已經支持使用指紋解鎖,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)會話。[4]

要啟用無根模式:在 /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

警告: KWin 啟動時默認啟用全局快捷鍵。這可能對登錄屏幕很危險,因為使用默認的鍵綁定可以繞過登錄提示。指定 --no-global-shortcuts 可以解決這個問題。[5]

將以下行添加到您的配置文件中,將 Wayland 混成器設置為 KWin 並啟用 wlr_layer_shell Wayland 協議擴展。這個 layer shell 包含在 layer-shell-qt 中。

/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-virtualkeyboardmaliit-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

故障排除

只有空白屏幕和光標,但沒有歡迎界面

如果沒有足夠的空間,歡迎界面會崩潰。使用 df -h 命令檢查您的磁碟空間。

如果磁碟空間足夠,那麼這個問題可能源於此 bug。切換到另一個 TTY,並嘗試loginctl unlock-session session_id重啟 SDDM。

SDDM 出現歡迎界面前的加載時間過長

內核熵池過小會造成長時間的 SDDM 加載過程(Bug report)。詳見隨機數生成英語Random number generation中擴大內核熵池的建議。

登錄後掛起

嘗試移除 ~/.Xauthority 文件後不重啟再次登入。重啟會再次創建該文件即該問題依舊存在。

SDDM 在 tty1 啟動而不是 tty7

SDDM 根據 systemd 的規定在 tty1 啟動圖形會話。

請注意,配置文件仍然有 MinimumVT 選項,但自 SDDM 版本 0.20 起已被忽略:sddm.conf(5) § MinimumVT=

一個或多個用戶沒有出現在歡迎界面

警告: 根據 UID 和 GID,通常不應將 UID 低於 1000 或高於 60513 的用戶暴露給顯示管理器

默認情況下,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/鍵盤設置英語Xorg/Keyboard_configuration

設置僅在 SDDM 中設置而不在後續會話中設置的鍵盤布局的另一種方法是在 SDDM 的啟動腳本(位於 /usr/share/sddm/scripts/Xsetup)中調用 setxkbmap 命令。有關示例,請參見Xorg/鍵盤設置#使用 setxkbmap英語Xorg/Keyboard configuration#Using setxkbmap

SDDM 可能也會錯誤地顯示為 US 布局,但在您開始輸入您的密碼時立即切換到正確的鍵盤布局 [6]。此 bug 看起來不是來自 SDDM,而是 Xorg[7]

屏幕解析度過低

此問題可能源於顯示屏 HiDPI 的使用破壞了 EDID [8]。如果你啟動了 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 作為認證文件,詳情見 [9]。因此,要找到該文件,可以使用一個腳本來查找:

# 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 查看有關此問題的更多細節。