跳至內容

顯示管理器

出自 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,用Go編寫。
https://github.com/tvrzna/emptty/ || emptty
  • loginx — 帶有友好 curses 用戶界面的 getty/login/xinit 組合。
https://sourceforge.net/projects/loginx/ || loginxAUR
  • Lemurs — TUI顯示管理器,用Rust編寫。支持 X、Wayland 和 TTY shell 會話。
https://github.com/coastalwhite/lemurs || lemurs
  • lidm — 完全彩色且可定製的 TUI 顯示管理器,由 C 語言製作。
https://github.com/javalsai/lidm || lidmAUR

圖形界面

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
https://invent.kde.org/plasma/plasma-login-manager/ || plasma-login-manager
  • SDDM — 基於 QML 的顯示管理器,KDM 的繼任者;推薦用於 PlasmaLXQt
https://github.com/sddm/sddm || sddm
  • XDM — 支持 XDMCP 的 X 顯示管理器,適合伺服器主機。
xdm(8) || xorg-xdm

登錄守護進程

  • greetd — 支持控制台和圖形歡迎程序的登錄守護程序。
https://git.sr.ht/~kennylevinsen/greetd || greetd

加載顯示管理器

要在啟動時啟用圖形登錄,請啟用相應的 systemd 服務:

  • GDM — gdm.service
  • LightDM — lightdm.service
  • LXDM — lxdm.service
  • Plasma 登錄管理器 — plasmalogin.service
  • SDDM — sddm.service
  • SLiM — slim.service
  • XDM — xdm.service
注意:如果安裝了 xdm-archlinux,請啟用 xdm-archlinux.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 中設置的應用程式將立即啟動。關閉應用程式後,會和註銷桌面環境或窗口管理器一樣回到登錄管理器。

需要注意的是大部分圖形程序都不支持此環境,因此可能需要手動調整或忍受限制(沒有窗口管理器,所以不要期望能夠移動或調整任何窗口,包括對話框;不過,也許可以在應用程式的配置文件中設置窗口幾何形狀)。

請參閱 Xinit#在沒有窗口管理器的情況下啟動應用程式

提示與技巧

自動啟動

大多數顯示管理器都會提供 /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-Busbusctl 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加密嗎? (在 討論:顯示管理器 中討論)

自 systemd 版本 255 起,pam_systemd_loadkey 可用於解鎖 GNOME/Kwallet Keyring,前提是用戶密碼與系統的 LUKS 密碼短語相符。要實現這一點,你需要在顯示管理器中啟用自動登錄。

參見