跳转至内容

显示管理器

来自 ArchWiki
(重定向自 Login manager)

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

显示管理器列表

控制台

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

图形界面

  • EntranceEnlightenment 显示管理器。高度实验性,且没有proper systemd支持。已停止开发。
https://github.com/Obsidian-StudiosInc/entrance || entrance-gitAUR
https://wiki.gnome.org/Projects/GDM || gdm
  • LightDM — 跨桌面显示管理器,可以使用用任何工具包编写的各种前端。
https://github.com/canonical/lightdm/ || lightdm
  • LXDMLXDE 显示管理器。可以独立于 LXDE 桌面环境使用。
https://sourceforge.net/projects/lxdm/ || lxdm
  • SDDM — 基于 QML 的显示管理器,KDM 的后继者;推荐用于 PlasmaLXQt
https://github.com/sddm/sddm || sddm
  • SLiM — 轻量级优雅的图形登录解决方案。于 2022 年复活,与 systemd 不完全兼容。
https://slim-fork.sourceforge.io/ || 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#Change default target to boot into

启用显示管理器服务后,应在 /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#Starting applications without a window manager

技巧与提示

自动启动

大多数显示管理器会加载 /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

GNOME 和 KDE 用户也可以在 GNOME 或 KDE 设置中设置语言。

注销然后再重新登录,更改才能生效。

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

本文章或章节需要扩充。

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

从 systemd 版本 255 开始,pam_systemd_loadkey 可以用来解锁 GNOME/KWallet 密钥环,如果用户密码与系统的 LUKS 密码短语匹配。要实现此功能,您需要在显示管理器中启用自动登录。

参见