顯示管理器
顯示管理器(或登錄管理器)通常是一個在啟動過程結束時代替默認 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 密碼短語相符。要實現這一點,你需要在顯示管理器中啟用自動登錄。
參見
- 登錄管理器:入門介紹——討論登錄管理器的實現