显示管理器

来自 Arch Linux 中文维基

显示管理器(或登录管理器)通常是一个在启动过程结束时代替默认 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/nullgemm/ly || ly
  • tbsm — Bash 会话或应用程序启动器。支持 X 和 Wayland 会话。
https://loh-tar.github.io/tbsm/ || tbsmAUR
  • emptty — TTY 上的简单 CLI 显示管理器,支持 X 和 Wayland。
https://github.com/tvrzna/emptty/ || emptty-gitAUR
  • loginx — 带有友好 curses 用户界面的 getty/login/xinit 组合。
https://sourceforge.net/projects/loginx/ || loginxAUR

图形界面[编辑 | 编辑源代码]

https://github.com/Obsidian-StudiosInc/entrance || entrance-gitAUR
https://wiki.gnome.org/Projects/GDM || gdm
  • LightDM — 跨桌面显示管理器,可以使用任何工具包编写的各种前端。
https://github.com/CanonicalLtd/lightdm/ || lightdm
  • LXDMLXDE 显示管理器。可以独立于 LXDE 桌面环境使用。
https://sourceforge.net/projects/lxdm/ || lxdm, lxdm-gtk3
  • SDDM — 基于 QML 的显示管理器,KDM 的继任者;推荐用于 PlasmaLXQt
https://github.com/sddm/sddm || sddm
  • XDM — 支持 XDMCP 的 X 显示管理器,适合服务器主机。
xdm(8) || xorg-xdm

登录守护进程[编辑 | 编辑源代码]

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

加载显示管理器[编辑 | 编辑源代码]

要启用图形登录,启用适当的 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 中设置的应用程序将立即启动。关闭应用程序后,会和注销桌面环境或窗口管理器一样回到登录管理器。

需要注意的是大部分图形程序都不支持此环境,因此可能需要手动调整或忍受限制(没有窗口管理器,所以不要期望能够移动或调整任何窗口,包括对话框;不过,也许可以在应用程序的配置文件中设置窗口几何形状)。

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

提示与技巧[编辑 | 编辑源代码]

自动启动[编辑 | 编辑源代码]

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

为用户会话设置语言[编辑 | 编辑源代码]

使用 AccountsService 的显示管理器可以通过以下编辑设置用户会话的区域

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

区域的值类似 en_GB.UTF-8

也可以使用 D-Busbusctl call org.freedesktop.Accounts /org/freedesktop/Accounts/User$UID org.freedesktop.Accounts.User SetLanguage s 区域

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