显示管理器
显示管理器(或登录管理器)通常是一个在启动过程结束时代替默认 shell 显示的图形用户界面。与窗口管理器和桌面环境类似,显示管理器也有很多实现。每个显示管理器通常都能进行一定程度的定制。
显示管理器列表
控制台
- CDM — 用 Bash 编写的显示管理器。
- Console TDM — 用 Bash 编写的 xinit 扩展。
- nodm — 用于自动登录的显示管理器(自 2017 年以来不再维护)。
- Ly — 用于 Linux 和 BSD 的 TUI(类似 ncurses)显示管理器。支持 X 和 Wayland 会话。
- tbsm — Bash 会话或应用程序启动器。支持 X 和 Wayland 会话。
- emptty — TTY 上的简单 CLI 显示管理器,支持 X 和 Wayland,用Go编写。
- loginx — 带有友好 curses 用户界面的 getty/login/xinit 组合。
- Lemurs — TUI显示管理器,用Rust编写。支持 X、Wayland 和 TTY shell 会话。
- lidm — 完全彩色且可定制的 TUI 显示管理器,由 C 语言制作。
图形界面
- Entrance — Enlightenment 显示管理器。
- LightDM — 跨桌面显示管理器,可以使用任何工具包编写的各种前端。
- Plasma 登录管理器 — Plasma 登录管理器;设计为SDDM的继任者。
- XDM — 支持 XDMCP 的 X 显示管理器,适合服务器主机。
登录守护进程
- greetd — 支持控制台和图形欢迎程序的登录守护程序。
加载显示管理器
要在启动时启用图形登录,请启用相应的 systemd 服务:
- GDM —
gdm.service - LightDM —
lightdm.service - LXDM —
lxdm.service - Plasma 登录管理器 —
plasmalogin.service - SDDM —
sddm.service - SLiM —
slim.service
- XDM —
xdm.service
如果默认启动目标是graphical.target,应能开箱即用。如果没有,可能需要重置自定义default.target符号链接,指向默认graphical.target。参见 systemd#更改开机默认启动目标。
启用显示管理器服务后,应在 /etc/systemd/system/ 中设置符号链接display-manager.service。你可能需要用--force来覆盖旧的符号链接。
$ /etc/systemd/system/display-manager.service
/etc/systemd/system/display-manager.service: symbolic link to /usr/lib/systemd/system/display-manager.service
使用 systemd-logind
为了检查用户会话的状态,你可以使用 loginctl。所有 Polkit 动作,比如休眠系统或挂载外部驱动器,开箱即用。
$ loginctl show-session $XDG_SESSION_ID
会话配置
许多显示管理器会读取 /usr/share/xsessions/ 目录来获取可用的会话列表。此目录中包含各个桌面环境或窗口管理器的标准桌面文件。一些显示管理器使用单独的 /usr/share/wayland-sessions/ 来列出特定于 Wayland 的会话。
要向显示管理器的会话列表添加/删除条目,请根据需要在 /usr/share/xsessions/ 中创建/删除 .desktop 文件。典型的 .desktop 文件如下所示:
[Desktop Entry] Name=Openbox Comment=Log in using the Openbox window manager (without a session manager) Exec=/usr/bin/openbox-session TryExec=/usr/bin/openbox-session Icon=openbox.png Type=Application
运行 ~/.xinitrc 会话
安装 xinit-xsessionAUR 后会在显示管理器中提供一个运行 xinitrc 会话的选项。请确保 ~/.xinitrc 可执行,然后在显示管理器中选择 xinitrc 作为会话。
没有窗口管理启动应用程序
也可以在没有窗口修饰、桌面或窗口管理的情况下启动应用程序。例如,要启动 google-chromeAUR,在 /usr/share/xsessions/ 中创建 web-browser.desktop:
[Desktop Entry] Name=Web Browser Comment=Use a web browser as your session Exec=/usr/bin/google-chrome --auto-launch-at-startup TryExec=/usr/bin/google-chrome --auto-launch-at-startup Icon=google-chrome Type=Application
在这种情况下,登录后,Exec 中设置的应用程序将立即启动。关闭应用程序后,会和注销桌面环境或窗口管理器一样回到登录管理器。
需要注意的是大部分图形程序都不支持此环境,因此可能需要手动调整或忍受限制(没有窗口管理器,所以不要期望能够移动或调整任何窗口,包括对话框;不过,也许可以在应用程序的配置文件中设置窗口几何形状)。
提示与技巧
自动启动
大多数显示管理器都会提供 /etc/xprofile、~/.xprofile 和 /etc/X11/xinit/xinitrc.d/。有关详细信息,请参阅 xprofile。
为用户会话设置语言
使用 AccountsService 的显示管理器可以通过以下编辑设置用户会话的区域:
/var/lib/AccountsService/users/$USER
[User] Language=your_locale
其中your_locale的值类似 zh_CN.UTF-8。
也可以使用 D-Bus:
busctl call org.freedesktop.Accounts /org/freedesktop/Accounts/User$UID org.freedesktop.Accounts.User SetLanguage s your_locale
GNOME和KDE用户也可以在GNOME或KDE设置中设置语言。
注销然后重新登录以使更改生效。
用LUKS自动登录时自动解锁GNOME Keyring/KDE KWallet
自 systemd 版本 255 起,pam_systemd_loadkey 可用于解锁 GNOME/Kwallet Keyring,前提是用户密码与系统的 LUKS 密码短语相符。要实现这一点,你需要在显示管理器中启用自动登录。
参见
- 登录管理器:入门介绍——讨论登录管理器的实现