SDDM (简体中文)

From ArchWiki
翻译状态:本文是 SDDM翻译。上次翻译日期:2020-04-28。如果英文版本有所更改,则您可以帮助同步翻译。

Simple Desktop Display Manager (SDDM) 是 KDE Plasma 桌面环境推荐的 显示管理器

维基百科 介绍:

Simple Desktop Display Manager (SDDM) 是用于 X11 和 wayland 视窗系统的显示管理器(图形登录界面)。SDDM 完全使用 C++11 编写并支持通过 QML 改变主题。对于KDE Plasma 5,KDE 选择了 SDDM 作为 KDE Display Manager 的接替者。
注意: SDDM 还没有完全支持 Wayland 视窗系统 [1]。Wayland 会话在支持之列,但 SDDM 运行于 X11。

安装

安装 sddm 软件包。对于 KDE Config Module,可选安装 sddm-kcm 软件包。

然后根据 Display manager (简体中文)#加载显示管理器 的说明配置 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-config-editor-gitAUR

一切东西都应该开箱即用,自从 Arch Linux 使用 systemd 后,SDDM 默认使用 systemd-logind 以进行会话管理。

自动登录

SDDM 通过它的配置文件来支持自动登录,例如:

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

此配置使得在系统启动后自动以用户 john 开启一个 KDE Plasma 会话。X 的会话类型位于 /usr/share/xsessions/, wayland 的会话类型位于 /usr/share/wayland-sessions/

目前尚不支持自动登录 KDE Plasma 的同时锁定会话 [2]

你可以添加一个脚本,在 KDE 自动启动时激活屏幕保护程序以作为一个解决方案:

#!/bin/sh
/usr/bin/dbus-send --session --type=method_call --dest=org.freedesktop.ScreenSaver /ScreenSaver org.freedesktop.ScreenSaver.Lock &

登录后自动解锁 KDE 钱包

详见 KDE Wallet (简体中文)#在登录时自动解锁 Kwallet

主题设置

[Theme] 小节更改主题设置。如果您使用 Plasma 的系统设置,主题可能会显示预览。

设置 breeze 以获得 Plasma 默认主题。

AUR 有一些可用的主题,例如 archlinux-themes-sddmAUR

当前主题

通过 Current 的值设置当前主题,例如 Current=archlinux-simplyblack

编辑主题

默认 SDDM 主题目录为 /usr/share/sddm/themes/。你可以添加你的自制主题到该目录下一个单独的子目录中。注意 SDDM 要求这些子目录的名字要与主题的名字一致。可以通过研究已安装的文件来更改或创建属于你的主题。

测试(预览)主题

如果需要,你可以预览一个 SDDM 主题。如果你想知道一个主题看起来怎么样,或是想要编辑一个主题后在不必登出的情况下观察改动的效果,那么这将会非常有用。你可以运行下面的命令:

$ sddm-greeter --test-mode --theme /usr/share/sddm/themes/breeze

这应该为所有已连接的显示器打开一个新窗口以显示主题的预览。

注意: 这只是一个预览。在这个模式下,一些动作如关机、挂起或登录将不会执行。

鼠标光标

要设置鼠标光标的主题,将 CursorTheme 设置成您喜欢的光标主题。

合法的 Plasma 鼠标光标主题有 breeze_cursorsBreeze_Snowbreeze-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.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

旋转显示

详见 Xrandr#Configuration

DPI 设置

有时位于“显示管理器”级别设置正确的显示器 DPI 是很有用的。[3] 你需要在 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

启用虚拟键盘

安装 qt5-virtualkeyboard. 创建如下文件:

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

SDDM 在登录屏幕的左下角会显示一个虚拟键盘图标。

使用指纹识别器

注意: 在改变设置前要确定你的指纹已经注册完成。指纹支持目前并不是完全工作正常,并且看起来在使用这种方法时仅使用密码登录将不再有效。

SDDM 使用 fprint 以使用指纹识别。在安装了 fprint 和添加指纹签名后,在添加 /etc/pam.d/sddm 的开始位置添加一行 auth sufficient pam_fprintd.so

提示: 要使其在 KDE 的锁屏模式下工作,将上面提到的一行同样添加于 /etc/pam.d/kde 的开始位置。

如果你现在在空密码区域按下回车,那么指纹识别器应该开始工作了。

故障排除

只有空白屏幕和光标,但没有欢迎界面

使用 df -h 命令检查您的磁盘空间。如果没有足够的空间,欢迎界面会崩溃。

如果磁盘空间足够,那么这个问题可能源于此 bug。切换 到另一个 TTY重启 SDDM。

SDDM 出现欢迎界面前的加载时间过长

内核熵池过小会造成长时间的 SDDM 加载过程(Bug report)。详见 Random number generation 扩大内核熵池的建议。

登录后挂起

尝试移除 ~/.Xauthority 文件后不重启再次登入。重启会再次创建该文件即该问题依旧存在。

SDDM 在 tty1 启动而不是 tty7

SDDM 根据 systemd 的规定 在 tty1 启动图形会话。如果您更喜欢老派的 tty1 到 tty6 皆预留为文本终端,更改 MinimumVT 变量的默认值,其位于 [X11] 小节下:

/etc/sddm.conf.d/tty.conf
[X11]
MinimumVT=7

一个或多个用户没有出现在欢迎界面

警告: 用户设置过低或过高的 UID 范围应该大体上不会暴露给 Display manager (简体中文)

SDDM 默认会显示 UID 在 1000 到 65000 范围内的用户,如果想要显示的用户的 UID 小于这个范围,那么您就不得不更改这个范围。比如,对于 UID 为 501时,可以修改:

/etc/sddm.conf.d/uid.conf
[Users]
HideShells=/sbin/nologin,/bin/false
# Hidden users, this is if any system users fall within your range, see /etc/passwd on your system.
HideUsers=git,sddm,systemd-journal-remote,systemd-journal-upload

# Maximum user id for displayed users
MaximumUid=65000

# Minimum user id for displayed users
MinimumUid=500 #My UID is 501

用户头像未显示在 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 只加载 US 键盘布局

SDDM 加载的键盘布局被确定在 /etc/X11/xorg.conf.d/00-keyboard.conf 文件中。您可以通过 localectl set-x11-keymap 命令以生成此配置文件。详见 Keyboard configuration in Xorg

设置仅在 SDDM 中设置而不在后续会话中设置的键盘布局的另一种方法是在 SDDM 的启动脚本(位于 /usr/share/sddm/scripts/Xsetup)中调用 setxkbmap 命令。有关示例,请参见 Xorg/Keyboard configuration#Using setxkbmap

SDDM 可能也会错误地显示为 US 布局,但在您开始输入您的密码时立即切换到正确的键盘布局 [4]。此 bug 看起来不是来自 SDDM,而是 libxcb (version 1.13-1 as of 2018) [5]

屏幕分辨率过低

此问题可能源于显示屏 HiDPI 的使用破坏了 EDID [6]。如果你 启动了 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 文件以关闭头像功能:

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

使用Intel核显鼠标移至模块时闪屏

这个问题可能因显卡的DRI设置而起,可尝试在/etc/X11/xorg.conf.d/20-intel.conf中添加或修改选项:

/etc/X11/xorg.conf.d/20-intel.conf
Option "DRI" "1"

可将其中的1替换为其他的DRI版本

Intel显卡的Xorg配置详见:Intel graphics