SDDM

来自 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 查看有关此问题的更多细节。