显示管理器

出自 ArchWiki
(重定向自 Nodm)

显示管理器,或登录管理器,通常是一个图形用户界面,它在启动过程结束时显示,以代替默认的 shell。显示管理器有各种不同的实现,就像窗口管理器和桌面环境有各种类型一样。每种显示管理器通常都有一定程度的自定义和主题化功能。

显示管理器列表

控制台

  • CDM — 用 Bash 编写的登录管理器。
https://github.com/evertiro/cdm || cdmAUR
https://github.com/dopsi/console-tdm || console-tdmAUR
  • nodm — 用于自动登录的显示管理器。自 2017 年起已停止维护。
https://github.com/spanezz/nodm || nodm
  • Ly — 用于 Linux 和 BSD 的 TUI (类似 ncurses) 显示管理器。支持 X 和 Wayland 会话。
https://github.com/fairyglade/ly || ly
  • tbsm — 一个 Bash 会话或应用程序启动器。支持 X 和 Wayland 会话。
https://loh-tar.github.io/tbsm/ || tbsmAUR
  • emptty — 简单的 TTY 上的 CLI 显示管理器,支持 X 和 Wayland。
https://github.com/tvrzna/emptty/ || emptty
  • loginx — 一个 getty/login/xinit 组合,带有友好的 curses 用户界面。
https://sourceforge.net/projects/loginx/ || loginxAUR
  • Lemurs — 用 Rust 编写的 Linux TUI 显示管理器。支持 X、Wayland 和 TTY shell 会话。
https://github.com/coastalwhite/lemurs || lemurs

图形界面

  • Entrance — Enlightenment 显示管理器。高度实验性,并且没有适当的 systemd 支持。不再开发。
https://github.com/Obsidian-StudiosInc/entrance || entrance-gitAUR
  • GDM — GNOME 显示管理器。
https://wiki.gnome.org/Projects/GDM || gdm
  • LightDM — 跨桌面显示管理器,可以使用任何工具包编写的各种前端。
https://github.com/canonical/lightdm/ || lightdm
  • LXDM — LXDE 显示管理器。可以独立于 LXDE 桌面环境使用。
https://sourceforge.net/projects/lxdm/ || lxdm, lxdm-gtk3
  • SDDM — 基于 QML 的显示管理器,是 KDM 的继任者;推荐用于 Plasma 和 LXQt。
https://github.com/sddm/sddm || sddm
  • SLiM — 轻量级且优雅的图形登录解决方案。自 2013 年起已停止维护,与 systemd 不完全兼容。
https://sourceforge.net/projects/slim.berlios/ || slim
  • XDM — 支持 XDMCP、主机选择器的 X 显示管理器。
xdm(8) || xorg-xdm

登录守护进程

  • greetd — 登录守护进程,支持控制台和图形欢迎程序。
https://git.sr.ht/~kennylevinsen/greetd || greetd

加载显示管理器

要启用图形登录,请启用相应的 systemd 服务。例如,对于 SDDM,启用 sddm.service。

这应该可以开箱即用。如果不行,您可能需要重置自定义的 default.target 符号链接,使其指向默认的 graphical.target。请参阅 systemd#更改默认启动目标

启用 SDDM 后,应该在 /etc/systemd/system/ 中设置一个符号链接 display-manager.service。您可能需要使用 --force 来覆盖旧的符号链接。

$ file /etc/systemd/system/display-manager.service
/etc/systemd/system/display-manager.service: symbolic link to /usr/lib/systemd/system/sddm.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 设置的应用程序将立即启动。当您关闭应用程序时,您将被带回到登录管理器(与从普通桌面环境或窗口管理器注销相同)。

重要的是要记住,大多数图形应用程序并非旨在以这种方式启动,您可能需要进行手动调整或接受一些限制(因为没有窗口管理器,所以不要期望能够移动或调整任何窗口的大小,包括对话框;尽管如此,您可能可以在应用程序的配置文件中设置窗口几何形状)。

另请参阅 xinitrc#在没有窗口管理器的情况下启动应用程序

技巧与诀窍

自动启动

大多数显示管理器会读取 /etc/xprofile~/.xprofile/etc/X11/xinit/xinitrc.d/。有关更多详细信息,请参阅 xprofile

为用户会话设置语言

对于使用 AccountsService 的显示管理器,可以通过编辑以下内容来设置用户会话的区域设置

/var/lib/AccountsService/users/$USER
[User]
Language=your_locale

其中 your_locale 是一个值,例如 en_GB.UTF-8

或者,您可以使用 D-Bus 实现此目的:busctl call org.freedesktop.Accounts /org/freedesktop/Accounts/User$UID org.freedesktop.Accounts.User SetLanguage s your_locale

注销然后重新登录以使更改生效。

在使用 LUKS 自动登录时自动解锁 Gnome Keyring / KDE KWallet

此文章或章节需要扩充。

原因:此功能是否仅适用于 sd-encrypt?(在 Talk:Display manager 中讨论)

自 systemd 255 版本起,如果用户密码与系统的 LUKS 密码匹配,则可以使用 pam_systemd_loadkey 来解锁 GNOME/Kwallet 密钥环。要使其工作,您需要在显示管理器中启用自动登录。

参见