顯示管理器

出自 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 區域

註銷然後重新登錄以使更改生效。