SDDM - Arch Linux 中文维基

跳至內容

# SDDM

出自 Arch Linux 中文维基
翻譯狀態：

- 本文（或部分內容）譯自 SDDM，最近一次同步於 2025-02-18，若英文版本有所更改，則您可以幫助同步與翻譯更改的內容。
- 您可以在 ArchWiki 的對應頁面找到本文翻譯的原始修訂歷史。
- 本文可能與英文原文存在出入。

相關文章

- 顯示管理器
- KDE

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包。可選安裝 sddm-kcm包 或 qt5-declarative包 以分別啟用對 KConfig Module 或 Qt5 的支持。

然後根據顯示管理器#加載顯示管理器的說明配置 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 現在無需配置即可檢測到 `/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.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 圖片作為用戶圖標。

注意：在許多 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 是很有用的。[1] 你需要在 `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 縮放取決於所使用的問候程序。[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 在登錄屏幕的左下角會顯示一個虛擬鍵盤圖標。

### 使用指紋識別器

提示：自 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）會話。[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

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

將以下行添加到您的配置文件中，將 Wayland 混成器設置為 KWin 並啟用 wlr_layer_shell Wayland 協議擴展。使用 Qt5 和 Qt6 的 SDDM 主題分別需要 layer-shell-qt包 和 layer-shell-qt5AUR。

    /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包 或 plasma-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 plasma-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=。

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

警告：根據 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 布局，但在您開始輸入您的密碼時立即切換到正確的鍵盤布局 [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`。

分類：​

- KDE
- 顯示管理器
- 使用「模板:過時」標記的頁面或章節

SDDM
新增話題