SDDM
简单桌面显示管理器 (SDDM) 是一个显示管理器。它是 KDE Plasma 和 LXQt 桌面环境的推荐显示管理器。
- 简单桌面显示管理器 (SDDM) 是用于 X11 和 Wayland 窗口系统的显示管理器(图形登录程序和会话管理器)。SDDM 从头开始用 C++11 编写,并通过 QML 支持主题。
KDE 开发团队已接受了一项提案,将 SDDM 项目纳入 Plasma Desktop 项目。SDDM 将成为 Plasma 的官方组成部分,更新可能会与 Plasma Desktop 更新一起推送。
安装
安装 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。 还有一个基于 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 会话。 可用的会话类型可以在 /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_cursors
、Breeze_Snow
和 breeze-dark
。
用户图标(头像)
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 图像文件。
~/.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
创建以下文件
/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 现在在登录屏幕的左下角显示一个按钮,以打开虚拟键盘。
使用指纹识别器
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
--no-global-shortcuts
可以解决此问题。[4]将以下行添加到您的配置文件中,会将 Wayland compositor 设置为 KWin,并启用 wlr_layer_shell Wayland 协议扩展。 这需要 layer-shell-qt 和 layer-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-virtualkeyboard 或 maliit-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 上显示
默认情况下,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
。