SDDM
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包 软件包。对于 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_cursors
,Breeze_Snow
和 breeze-dark
。
用户图标(头像)[编辑 | 编辑源代码]
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 图片作为用户图标。
~/.face
而 ~/.face.icon
是链接到图像文件的符号链接。如果用户的图标是符号链接,你需要为目标文件设置恰当的文件权限。为了设置合适权限运行:
$ setfacl -m u:sddm:x ~/ $ setfacl -m u:sddm:r ~/.face.icon
你可以通过运行下列命令检查权限:
$ getfacl ~/ $ getfacl ~/.face.icon
数字锁[编辑 | 编辑源代码]
如果你想强制启用数字锁,在 [General]
小节设置 Numlock=on
。
如果 SDDM 在 Wayland 下运行,当前 NumLock 设置不起作用。您可能需要更改 KWin 设置以启用它,请参阅此 issue
旋转显示[编辑 | 编辑源代码]
DPI 设置[编辑 | 编辑源代码]
有时位于“显示管理器”级别设置正确的显示器 DPI 是很有用的。[2] 你需要在 ServerArguments
字符串的末尾加上参数 -dpi your_dpi
例如:
/etc/sddm.conf.d/dpi.conf
[X11] ServerArguments=-nolisten tcp -dpi 94
启用 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 在登录屏幕的左下角会显示一个虚拟键盘图标。
使用指纹识别器[编辑 | 编辑源代码]
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[编辑 | 编辑源代码]
--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-virtualkeyboard包 或 maliit-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)。详见随机数生成中扩大内核熵池的建议。
登录后挂起[编辑 | 编辑源代码]
尝试移除 ~/.Xauthority
文件后不重启再次登入。重启会再次创建该文件即该问题依旧存在。
SDDM 在 tty1 启动而不是 tty7[编辑 | 编辑源代码]
SDDM 根据 systemd 的规定在 tty1 启动图形会话。
请注意,配置文件仍然有 MinimumVT
选项,但自 SDDM 版本 0.20 起已被忽略:sddm.conf(5) § MinimumVT=。
一个或多个用户没有出现在欢迎界面[编辑 | 编辑源代码]
默认情况下,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/键盘设置。
设置仅在 SDDM 中设置而不在后续会话中设置的键盘布局的另一种方法是在 SDDM 的启动脚本(位于 /usr/share/sddm/scripts/Xsetup
)中调用 setxkbmap 命令。有关示例,请参见Xorg/键盘设置#使用 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 查看有关此问题的更多细节。