SDDM

出自 ArchWiki

简单桌面显示管理器 (SDDM) 是一个显示管理器。它是 KDE Plasma 和 LXQt 桌面环境的推荐显示管理器。

出自 维基百科:简单桌面显示管理器

简单桌面显示管理器 (SDDM) 是用于 X11 和 Wayland 窗口系统的显示管理器(图形登录程序和会话管理器)。SDDM 从头开始用 C++11 编写,并通过 QML 支持主题。

KDE 开发团队已接受了一项提案,将 SDDM 项目纳入 Plasma Desktop 项目。SDDM 将成为 Plasma 的官方组成部分,更新可能会与 Plasma Desktop 更新一起推送。

注意: 截至 SDDM 版本 0.20,Wayland 会话已列出,可以从 SDDM 启动,但 SDDM Greeter 本身仍然默认在 X11 模式下运行,尽管实验性的 Wayland Greeter 可以启用

安装

安装 sddm 软件包。 可选安装 sddm-kcm 以用于 KConfig 模块qt5-declarative 以启用 Qt5 主题支持。

按照显示管理器#加载显示管理器在启动时启动 SDDM。

配置

SDDM 的默认配置文件位于 /usr/lib/sddm/sddm.conf.d/default.conf。 对于任何更改,请在 /etc/sddm.conf.d/ 中创建配置文件。 有关所有选项,请参阅 sddm.conf(5)

sddm-kcm 软件包(包含在 plasma 组中)提供了一个 GUI,用于在 Plasma 的系统设置中配置 SDDM。 还有一个基于 Qtsddm-conf-gitAUR 可用。

一切都应该开箱即用,因为 Arch Linux 使用 systemd,并且 SDDM 默认使用 systemd-logind 进行会话管理。

自动登录

SDDM 通过其配置文件支持自动登录,例如

/etc/sddm.conf.d/autologin.conf
[Autologin]
User=john
Session=plasma

此配置导致在系统启动时为用户 john 启动 KDE Plasma 会话。 可用的会话类型可以在 /usr/share/xsessions/ 中找到 X 会话类型,在 /usr/share/wayland-sessions/ 中找到 Wayland 会话类型。

要自动登录到 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#登录时自动解锁 KDE Wallet

主题设置

主题设置可以在 [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 或 SDDM 配置文件中 FacesDir 指定的所有用户的通用位置读取用户图标(又名“头像”)作为 PNG 图像。 配置设置可以直接放在 /etc/sddm.conf 中,或者最好放在 /etc/sddm.conf.d/ 下的文件中,例如 /etc/sddm.conf.d/avatar.conf

要使用 FacesDir 位置选项,请将每个用户的 PNG 图像命名为 username.face.icon 放在配置文件中 FacesDir 键指定的位置。 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:无用户图标

Numlock

如果您想强制启用 Numlock,请在 [General] 部分中设置 Numlock=on

如果 SDDM 在 Wayland 下运行,则 Numlock 设置当前不起作用。 您可能需要更改 KWin 设置以启用它,请参阅 此问题

旋转显示

请参阅 Xrandr#配置

DPI 设置

有时在“显示管理器”级别设置正确的监视器 PPI 设置很有用。[1] 要做到这一点,您需要在 ServerArguments 的字符串末尾添加参数 -dpi your_dpi。 例如

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

启用 HiDPI

注意: 自 sddm 版本 0.20.0 起,默认启用 HiDPI 支持,以下步骤不是必需的。

创建以下文件

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

[X11]
EnableHiDPI=true

使用 Wayland 时,HiDPI 缩放取决于使用的 Greeter。[2] 例如,当使用基于 Qt 的 Greeter(如 Breeze)时,添加以下配置

[General]
GreeterEnvironment=QT_SCREEN_SCALE_FACTORS=2,QT_FONT_DPI=192

启用虚拟键盘

安装 qt6-virtualkeyboard(或另一个虚拟键盘)。

创建以下文件

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

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#登录时自动解锁 KDE Wallet),但是第一行确保密码登录将自动解锁 KWallet。

如果您现在在空白密码字段中按 Enter 键,则指纹识别器应开始工作。

无根模式

传统上,X11 显示服务器默认以 root 权限运行。 这种 rootful 模式允许 X11 无限制地访问系统资源,这对于在直接硬件访问和管理很常见的环境中运行是必要的。 然而,随着现代计算环境中对安全性的日益重视,人们一直在努力过渡到无根模式,这也是 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 compositor,即使它未安装,要使用不同的 Wayland compositor,请输入程序和相关参数到 CompositorCommand 选项,如 #KDE Plasma / KWin 中所述,另请参阅 sddm.conf(5) 了解更多信息。

Wayland

KDE Plasma / KWin

警告: 默认情况下,KWin 启动时会启用全局快捷键。 这对于登录屏幕可能很危险,因为它可能通过默认的按键绑定绕过登录提示。 指定 --no-global-shortcuts 可以解决此问题。[4]

将以下行添加到您的配置文件中,会将 Wayland compositor 设置为 KWin,并启用 wlr_layer_shell Wayland 协议扩展。 这需要 layer-shell-qtlayer-shell-qt5 分别用于使用 Qt6 和 Qt5 的 SDDM 主题。

/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),请将 --inputmethod 标志与适当的键盘附加到 kwin_wayland 命令,如下所示。 请勿在 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 中启用正确的显示和监视器处理(缩放、监视器分辨率、hz,...),您可以将您主目录中的相应配置文件复制或修改到 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

故障排除

屏幕空白并显示光标,但不显示 Greeter

如果没有可用的磁盘空间,Greeter 将崩溃。 使用 df -h 检查您的磁盘空间。

如果磁盘空间不是问题,则可能是由于 一个错误切换到另一个 TTY,然后尝试 loginctl unlock-session session_id重启 SDDM。

登录后挂起

尝试删除 ~/.Xauthority 并重新登录,无需重启。 不登录就重启会再次创建该文件,问题将持续存在。

SDDM 在 tty1 而不是 tty7 上启动

SDDM 遵循 systemd 约定,在 tty1 上启动第一个图形会话。

请注意,配置文件仍然具有选项 MinimumVT,但自 SDDM 版本 0.20 以来已被忽略:sddm.conf(5) § MinimumVT=

一个或多个用户未在 Greeter 上显示

警告: 通常不应将 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 设置为适当的值。

用户头像未在 Greeter 上显示

如果用户数量超过 DisableAvatarsThreshold 参数,或者如果根本未启用头像(由 EnableAvatars 参数控制),则用户头像不会在 Greeter 上显示。 要解决此问题,请将以下行添加到您的 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 仅加载美式键盘布局

SDDM 加载 /etc/X11/xorg.conf.d/00-keyboard.conf 中指定的键盘布局。 您可以使用 localectl set-x11-keymap 命令生成此配置文件。 有关更多信息,请参阅 Xorg 中的键盘配置

设置键盘布局的另一种方法是在 SDDM 的启动脚本中调用 setxkbmap 命令,该脚本位于 /usr/share/sddm/scripts/Xsetup。 有关示例,请参阅 Xorg/键盘配置#使用 setxkbmap

SDDM 也可能错误地将布局显示为美国英语,但在您开始输入密码后会立即更改为正确的布局 [5]。 这似乎不是 SDDM 中的错误,而是 X 服务器中的错误。[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

autofs home 目录加载时间过长

SDDM 默认情况下尝试通过访问 ~/.face.icon 文件来显示用户头像。 如果您的 home 目录是 autofs,例如如果您使用 dm-crypt,这将使其等待 60 秒,直到 autofs 报告目录无法挂载。

您可以通过创建以下配置文件来禁用头像

/etc/sddm.conf.d/avatar.conf
[Theme]
EnableAvatars=false

X authority(又名 MIT-MAGIC-COOKIE)文件

SDDM 使用随机的新 UUID 作为 auth 文件,如 [8] 中详细描述的那样。 因此,为了找到该文件,可以使用脚本

# find /var/run/sddm/ -type f

如果需要在没有用户登录时启动 x11vnc,则可能需要这样做。 例如

# x11vnc -display :0 -auth "$( find /var/run/sddm/ -type f )"

多屏幕设置上 Greeter 重叠

有时,多屏幕设置上的 X 监视器布局未正确设置,导致 Greeter 重叠。 要解决此问题,请添加以下行以从左到右排序您的 sddm Greeter 布局

/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 登录会话可能会出现在与主显示器不同的显示器上。 如果辅助显示器已旋转而主显示器未旋转,则此问题可能会很烦人。 解决此问题的一个简单方法是使用 xrandr 在使用 Xsetup 脚本的登录会话之前配置显示器。 例如,此处 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 - run as root before the login dialog appears

xrandr --output DP-4 --auto --primary
xrandr --output DP-2 --left-of DP-4 --rotate left --noprimary

使用 NVIDIA 显卡注销后黑屏

在一个用户注销后,可能会遇到完全黑屏或仅显示光标/显示设备徽标的情况。 发生这种情况是因为 sddm.service 启动速度快于 NVIDIA 驱动程序。 考虑使用早期 KMS

首次密码尝试失败会导致后续尝试中输入几个按键后文本自行清除

使用与默认主题不同的主题。

混合显卡在 Wayland 上屏幕不同步

如果您使用 kwin_wayland compositor 设置 SDDM,则在启动时可能会遇到屏幕不同步的情况。 如果返回到 X11 工作良好,并且您正在使用 mesa-amber 驱动程序,则只需将您当前的 mesa-amber 驱动程序替换为 mesa,Wayland 可能会工作良好。 您可以在 KDE Bug 483804 中找到有关此问题的更多详细信息。

某些主题崩溃

某些 SDDM 主题未在 metadata.desktop 中指定 QtVersion,并且 SDDM 以不兼容的 Greeter(qt5 而不是 qt6)启动。

如果您设置了自定义主题,但在重启时出现默认主题并显示错误 Library import requires a version,则需要将 QtVersion=6 添加到 /usr/share/sddm/themes/ThemeName/metadata.desktop