LightDM
- 跨桌面 - 支持不同的桌面環境。
- 支持多種顯示技術(X, Mir, Wayland, ...)。
- 輕量級 - 低內存占用以及高性能。
- 支持訪客會話。
- 支持遠程登錄(傳入 - XDMCP, VNC, 傳出 - XDMCP, PAM)。
- 完善的測試組件。
- 低代碼複雜度。
更多關於LightDM的特性可以在這裡找到。
安裝
之後跟隨顯示管理器#加載顯示管理器這一章節的指示,配置LightDM作為顯示管理器的自啟動。
Greeter
使用 LightDM 可能需要安裝一個 greeter。 greeter 是提示用戶輸入憑據、讓用戶選擇一個會話等的圖形界面。在配置了自動登錄的情況下,可以不使用 greeter。否則需要安裝 xorg-server包 和至少一個下面列出的 greeter軟體包。
基於GTK的 greeter:
- LightDM GTK Greeter — 被 LightDM 默認使用的 greeter, 除非用戶手動設置使用其他 greeter。
- lightdm-pantheon-greeter — 來自 ElementaryOS 項目的 greeter。
- slick-greeter — 比 lightdm-gtk-greeter包 更注重美化的 GTK greeter , 從 lightdm-unity-greeterAUR 分支發展而來, 被 Linux Mint 發行版默認使用。
- LightDM Web Greeter — 一個以 Webkit2 為主題引擎的 greeter。 不過該項目已經在2019年5月22日停止開發。
- Mini-Greeter — 一個最小化可配置的單用戶 GTK3 greeter。
- Nody Greeter — 一個能以 web 技術創建精美主題的 LightDM greeter。基於 Node.js、 Electron.js 和 NodeGTK。
基於Qt的 greeter:
- Web Greeter — 一個高顏值的現代化 greeter,使用 PyQtWebEngine 作為主題引擎,是 lightdm-webkit2-greeter包 的替代。
- LightDM KDE Greeter — 一個由 KDE 開發的 LightDM greeter。
其他 greeter:
- lightdm-deepin-greeter — 由深度桌面提供。
- LightDM Elephant Greeter — 默認情況下在 cage包 Wayland 合成器中運行的小而簡單的歡迎程序。
lightdm-webkit2-greeter包 的主題:
- Litarvan的 LightDM WebKit2 主題 — 現代且功能齊全的 Webkit2 LightDM 主題。
- Aether — 以 lightdm-webkit2-greeter 為引擎的簡潔、流暢、直接的 Arch Linux 主題登錄屏幕。
web-greeterAUR 與 nody-greeterAUR 的主題:
- Shikai — 一個美觀、可定製的 greeter 主題。
可以通過配置文件的 [Seat:*] 設置修改默認 greeter:
/etc/lightdm/lightdm.conf
[Seat:*] ... greeter-session=lightdm-你要用的greeter名-greeter
io.elementary.greeter.conf, 而不是 lightdm-pantheon-greeter.conf
檢查有哪些 greeter-session 可用的一種辦法是列出 /usr/share/xgreeters 目錄中的文件; 每個.desktop文件代表一個可用的歡迎程序。 在本例中,lightdm-gtk-greeter 和 lightdm-webkit2-greeter 顯示為可用 greeter :
$ ls -1 /usr/share/xgreeters/
lightdm-gtk-greeter.desktop lightdm-webkit2-greeter.desktop
啟用 LightDM
請使用 systemctl 啟用 lightdm.service 來讓 LightDM 開機啟動。參考顯示管理器#加載顯示管理器。
命令行工具
LightDM 提供一個命令行工具, dm-tool。它可用來鎖定當前 Seat,切換會話,等等。這對'極簡'窗口管理器和測試非常有用。要列出可用命令,可以運行:
$ dm-tool --help
用戶切換
dm-tool lock 或 dm-tool switch-to-greeter 將不會鎖定會話, 請參閱 XScreenSaver#從鎖屏畫面切換登錄用戶。LightDM 的 dm-tool 命令能用於允許多個用戶在不同的終端上登錄。運行下面的命令會發送一個請求鎖定當前會話的信號,然後將啟動切換到 LightDM 的 greeter 界面,以允許新用戶登錄系統。
$ dm-tool switch-to-greeter
測試
首先,安裝 xorg-server-xephyr包.
之後,把 LightDM 作為 X 程序啟動:
$ lightdm --test-mode --debug
配置和調整
可以通過修改其配置文件 /etc/lightdm/lightdm.conf 來配置LightDM。
某些 greeter 擁有自己的配置文件。例如
-
lightdm-gtk-greeter包:
/etc/lightdm/lightdm-gtk-greeter.conf(或者你也可以使用 lightdm-gtk-greeter-settings包 圖形化配置程序), -
lightdm-webkit2-greeter包:
/etc/lightdm/lightdm-webkit2-greeter.conf
X 會話包裝器
如果是從 xinit 遷移過來,可以注意到顯示服務不是由 shell 啟動的。這是因為,與 shell 啟動顯示服務並繼承 shell 的環境相反,LightDM 啟動的圖形界面並不讀取 shell。LightDM 通過運行包裝器腳本啟動顯示服務,最後執行您的圖形環境。默認情況下,會運行 /etc/lightdm/Xsession。
環境變量
該腳本會按照先後順序檢查並讀取 /etc/profile、~/.profile、/etc/xprofile 和 ~/.xprofile。如果實際使用的 shell 不會讀取這些文件,也可以創建一個 ~/.xprofile 來達到同樣的效果。 (在這個例子中,登錄 shell 是 zsh)
~/.xprofile
#!/bin/sh [ -f ~/.config/zsh/.zshenv ] && . ~/.config/zsh/.zshenv
如果有對顯示服務非常重要的 shell 變量(例如 Gtk 或 QT 主題、GNUPG 位置、要覆蓋的配置等),這就可以讓圖形環境可以訪問到設定的環境變量,而不必通過登錄 shell 來啟動。
鍵盤映射
該腳本使用文件 /etc/X11/Xkbmap、~/.Xkbmap 中提供的參數運行 Xkbmap。如果沒有找到這些文件,它將運行 xmodmap 和 /etc/X11/Xmodmap,~/.Xmodmap。 如果使用 xkbmap,則使用 cat 解析文件。 下面是一個可以生效的示例:
~/.Xkbmap
-model pc105 -layout us,us,tr -variant ,dvorak,f -option grp:caps_toggle
否則,會話將繼承X11的系統默認映射。這個映射可以在 xorg 配置文件中定義,手動編輯或使用 localectl set-x11-keymap 命令。參見Xorg/鍵盤配置#設置鍵盤布局。
在 lightdm-gtk-greeter 中使用多個鍵盤布局
要使用戶能夠在登錄屏幕上的預定義鍵盤布局之間切換,請啟用下拉菜單並配置布局。使用 lightdm-gtk-greeter-settings包 gui 進行配置或直接編輯配置文件:
/etc/lightdm/lightdm-gtk-greeter.conf
[greeter] indicators = ~host;~spacer;~clock;~spacer;~layout;~language;~session;~a11y;~power
使用 localectl 來設置多個布局, 例如 de 和它的變體且以後者為主:
# localectl --no-convert set-x11-keymap de,de pc105 neo,
請注意末尾的逗號,這意味著第二個 de 的空白變體。
更改背景圖片/顏色
你可以設置一個十六進制顏色或者一張圖片作為背景。一些 greeter 提供了更強大的背景選項,比如說在登錄界面切換背景,隨機背景功能。
GTK greeter
可以使用 lightdm-gtk-greeter-settings包 圖形界面進行設置。
如果需要在 greeter 上使用自定義圖片,請修改 /etc/lightdm/lightdm-gtk-greeter.conf 中的 background 變量值。變量位於 [greeter] 會話,例如:
/etc/lightdm/lightdm-gtk-greeter.conf
[greeter] background=/usr/share/pixmaps/black_and_white_photography-wallpaper-1920x1080.jpg
/usr/share/pixmaps,因為 LightDM 用戶需要有背景文件的讀取權限。可以通過 [greeter] 段落的 theme-name 變量配置 GTK3 主題、圖標主題以及指針主題:
/etc/lightdm/lightdm-gtk-greeter.conf
[greeter] theme-name = Tela icon-theme-name = Tela cursor-theme-name = Tela cursor-theme-size = 32 font-name = Cantarell 20
HiDPI 與 4K 的配置
若在 lightdm-gtk-greeter 上直接使用 HiDPI 或 4K 的顯示器,其渲染的文本和對話框將會異常的小。可以通過像這樣的DPI配置來解決該問題:
/etc/lightdm/lightdm-gtk-greeter.conf
[greeter] xft-dpi = 192
In this case "192" means twice the 96 DPI setting of the screen, which is equivalent to the 2X Scale setting in other graphic environments. The value can be obtained with xdpyinfo | grep dots in Xorg, for example.
在本例中,"192" 代表兩倍的 96 DPI 屏幕設定,等價於其他圖形環境的 2X 縮放 選項。該值可以通過在 Xorg 中運行 xdpyinfo | grep dots 獲得。
Webkit2 greeter
lightdm-webkit2-greeter包 包允許您在登錄屏幕上直接選擇背景圖像。如果您使用Material 主題,它還提供了每次啟動時顯示隨機圖像的選項。默認情況下,圖像來源於 /usr/share/backgrounds。您可以通過編輯 lightdm-webkit2-greeter.conf 來更改背景圖像目錄。例如:
/etc/lightdm/lightdm-webkit2-greeter.conf
[branding] background_images = /usr/share/backgrounds
/home 目錄下。Slick Greeter
使用 lightdm-settingsAUR 圖形界面設置。
更改頭像
首先確保已安裝 accountsservice包 軟體包,然後如下設置,把 username 替換為目標用戶的登錄名。
- 準備一張 96x96 PNG 圖像文件 ,把它放到
/var/lib/AccountsService/icons/username.png位置。你也可以用不同格式的圖像,比如說 JPEG。 - 或者,如果圖像目錄配置已經指向
/home/username/.face,那麼把你的圖片放到該位置即可,然後跳過下面的步驟 - 編輯或創建
/var/lib/AccountsService/users/username, 添加如下內容:
[User] Icon=/var/lib/AccountsService/icons/username.png
Arch 為中心的 64x64 圖標來源
archlinux-artworkAUR 軟體包包含了一些不錯的例子。它們被安裝到 /usr/share/archlinux/icons, 可如下複製到 /usr/share/icons/hicolor/64x64/devices:
# find /usr/share/archlinux/icons -name "*64*" -exec cp {} /usr/share/icons/hicolor/64x64/devices \;
複製之後,可刪除 archlinux-artworkAUR.
啟用自動登錄
編輯 LightDM 配置文件,取消該行的注釋,並添加要自動登錄的用戶名:
/etc/lightdm/lightdm.conf
[Seat:*] autologin-user=username
要讓用戶登錄時不用輸入密碼,用戶必須是 autologin 組的成員:
# groupadd autologin # gpasswd -a username autologin
LightDM使用自動登錄的用戶的 ~/.dmrc 中指定的會話進行登錄。要覆蓋這個文件,在 lightdm.conf 中指定 autologin-session 即可:
/etc/lightdm/lightdm.conf
[Seat:*] autologin-user=username autologin-session=session
可以通過列出 /usr/share/xsessions/*.desktop 獲取有效會話名稱的列表,其中包含X會話,以及通過列出 /usr/share/wayland-sessions/*.desktop 獲取Wayland會話的列表。
啟用無密碼交互登錄
LightDM 使用 PAM 完成登錄操作,因此你必須在此之前配置好與LightDM相關的PAM配置
/etc/pam.d/lightdm
#%PAM-1.0 auth sufficient pam_succeed_if.so user ingroup nopasswdlogin auth include system-login ...
同時你必須是 nopasswdlogin 組的成員以完成無密碼登錄的過程
# groupadd -r nopasswdlogin # gpasswd -a username nopasswdlogin # gpasswd -a username nopasswdlogin # gpasswd -a username autologin
要創建一個新的用戶帳戶,可以自動登錄,並且可以再次無需密碼登錄,可以創建一個同時屬於這兩個組的輔助成員的用戶,例如:
# useradd -mG autologin,nopasswdlogin -s /bin/bash username
啟用訪客會話
要在LightDM中啟用訪客會話(無需改變系統配置),你需要至少兩樣東西:
-
guest-account-script:默認為
guest-account,並且接受兩個命令:- add (創建一個臨時的訪客系統帳戶,並返回創建帳戶的用戶名)
- remove account name (刪除相應的帳戶)
- 一個 autologin 組,需要將創建的訪客帳戶添加到其中(參考
/etc/pam.d/lightdm-autologin)
有兩個 AUR 軟體包可以在 lightdm 中啟用訪客會話:
- lightdm-guestAUR 提供了(大部分未修改)上游的 guest-session 腳本,以及 lightdm包 本身。
- lightdm-guest-accountAUR 只提供了一個精簡版本的腳本。
隱藏系統和服務用戶
為防止系統用戶出現在登錄界面,安裝可選依賴 accountsservice包, 或者把這些用戶名添加到 /etc/lightdm/users.conf 下的 hidden-users 裡。前者優勢在於添加/刪除用戶時不用更新列表。
從 SLiM 遷移
把 xinitrc 的內容搬到 xprofile, 刪除調用窗口管理器或桌面環境的部分。
使用 ~/.xinitrc 登錄
默認打開小鍵盤
安裝 numlockx包, 編輯 /etc/lightdm/lightdm.conf 添加以下幾行:
/etc/lightdm/lightdm.conf
[Seat:*] greeter-setup-script=/usr/bin/numlockx on
默認會話
Lightdm, 像其他 DM 一樣,把上次選擇的 xsession 存儲在 ~/.dmrc. 更多信息見 Display manager#Session configuration.
修改登錄窗口的位置
GTK+ greeter
編輯 /etc/lightdm/lightdm-gtk-greeter.conf 文件,設置 position,這個設置接受 x 和 y 變量,可以使用絕對值(pixels)或相對值(percent). 每個變量都可以增加一個額外的錨定位置 start, center 和 end,數值間用 comma 分隔.
例如:
position=200,start 50%,center
VNC 服務
Lightdm也可以用於通過VNC連接。請確保在伺服器端安裝了 tigervnc包 包,並可選擇在客戶端PC上安裝作為VNC客戶端。
在以root身份登錄的伺服器上設置身份驗證密碼:
# vncpasswd /etc/vncpasswd
請按照以下所示編輯LightDM配置文件。 注意, listen-address 參數配置了VNC只允許從本地連接。這是為了只允許通過 SSH 和埠轉發進行連接。在SSH客戶端上,請確保您使用 localhost:5900 作為隧道目的;在雙棧網絡連接上使用 127.0.0.1:5900 或 ::1:5900 是不可靠的。如果您想允許不安全的連接,可以禁用此設置。
/etc/lightdm/lightdm.conf
[VNCServer] enabled=true command=Xvnc -rfbauth /etc/vncpasswd port=5900 listen-address=localhost width=1024 height=768 depth=24
現在按照 TigerVNC#On the client 中描述的方法打開一個 SSH 隧道並連接到本地主機。
使用light-locker鎖定屏幕
light-locker包 是一個使用 LightDM 進行用戶驗證的簡單屏幕鎖定工具。一旦安裝並運行,您可以通過以下方式鎖定您的會話:
$ light-locker-command -l
這需要在您的會話開始時啟動 light-locker。默認情況下,通過 XDG Autostart 啟動。請參見 Autostarting 獲取更多選項。
多顯示器設置
有時候 LightDM 在多顯示器設置下無法正確設置監視器解析度。以下的 Xorg 配置適用於兩個顯示器:一個大的主屏幕在左側,和一個較小的次屏幕在其右側。這個順序可以被修改和調整。
/etc/X11/xorg.conf.d/52-resolution-fix.conf
Section "Monitor"
Identifier "DP1"
Option "PreferredMode" "3840x2160"
Option "Primary" "1"
EndSection
Section "Monitor"
Identifier "eDP1"
Option "PreferredMode" "1920x1080"
Option "RightOf" "DP1"
EndSection
這使得 /etc/lightdm/lightdm.conf 中的 display-setup-script 調整變得多餘。
疑難問題
自動登錄無效
確保 /etc/lightdm/lightdm.conf 文件中的 autologin-user= 包含正確的值。末尾的空白字符會導致錯誤。
如果自動登錄時出現空白屏幕或登錄屏幕立即返回的情況,您可能需要進行以下設置: logind-check-graphical=true。
你還可以安裝 lightdm-autologin-greeter-gitAUR 來實現這個特殊目的。
查看當前配置
要查看有效配置,請運行以下命令:
$ lightdm --show-config
這將顯示當前的設置,以及這些設置所讀取的配置文件。
LightDM啟動失敗,並且屏幕閃爍
如果你一直屏幕閃爍並且啟動後沒有 lightdm, 確保你已在 lightdm 的配置文件裡正確設置了 greeter. 如果你正確設置了 GTK greeter, 確保 xsessions-directory (默認是: /usr/share/xsessions) 存在並且至少包含一個 .desktop 文件。
如果你上次選擇的會話永久失效了,lightdm 啟動時也可能有同樣問題 (例如上次使用的是 gnome 並刪除了 gnome-session 軟體包): 最簡單的解決方法就是恢復刪掉的軟體包。另一個可能的解決是:
# dbus-send --system --type=method_call --print-reply --dest=org.freedesktop.Accounts /org/freedesktop/Accounts/User1000 org.freedesktop.Accounts.User.SetXSession string:xfce
此例為用戶 1000 設置默認會話為 "xfce".
顯示錯誤語言環境
如果 Lightdm 未正常顯示你的語言環境,把你的語言環境添加到 /etc/environment (自己酌情更改)
LANG=pt_PT.utf8
如果您希望LightDM及其歡迎界面使用與系統區域設置不同的語言,您可以使用Systemd#Drop-in files 中的 Environment= 選項。
使用 GTK greeter 丟失圖標
如果你把 lightdm-gtk-greeter包 作為 greeter 並且它把占位符圖像顯示為圖標,確保已安裝和正確配置有效的圖標主題和主題。檢查如下文件:
/etc/lightdm/lightdm-gtk-greeter.conf
[greeter] theme-name=mate # this should be the name of a directory under /usr/share/themes/ icon-theme-name=mate # this should be the name of a fully featured icons set directory under /usr/share/icons/
LightDM 在登錄提示符處凍結
你會發現當輸入正確的用戶名和密碼嘗試登錄時 LightDM 凍結,你無法進入桌面。為修復,重新安裝 gdk-pixbuf2包 軟體包。參見這個論壇帖子。
LightDM 顯示在錯誤的顯示器上
如果你使用的多顯示器,LightDM 可能會顯示在不該出現的那一個上 (例如: 主顯示器在左邊). 為強制 LightDM 登錄界面顯示在特定的顯示器上,編輯 /etc/lightdm/lightdm.conf 更改 display-setup-script 參數如下:
/etc/lightdm/lightdm.conf
display-setup-script=xrandr --output HDMI-1 --primary
替換 HDMI-1 為你的正確的顯示器 ID, 可從 xrandr 命令輸出獲取。
另外,如果您使用的是GTK歡迎界面,您可以編輯 /etc/lightdm/lightdm-gtk-greeter.conf 文件,並添加 active-monitor 參數,如下所示:
/etc/lightdm/lightdm-gtk-greeter.conf
[greeter] active-monitor=0
請將0替換為所需的顯示器編號。
LightDM不顯示或僅顯示TTY輸出
可能系統啟動太快了,LightDM 服務在圖形驅動加載前就啟動了。如果是這樣,將下面配置加入 lightdm.conf 文件:
/etc/lightdm/lightdm.conf
[LightDM] logind-check-graphical=true
設置後 LightDM 會等待圖形驅動加載完成後再啟動 greeters/autostarting 會話。
在更新的 LightDM 版本中,這是默認設置。因此,在某些硬體上,可能無法正確檢測到圖形驅動程序,並且 LightDM 可能永遠不會嘗試啟動登錄管理器——即使在系統啟動後穩定下來後也是如此。如果發生這種情況,將此設置為 false 將禁用此檢查,並強制 LightDM 無論如何都啟動登錄管理器。
在Intel圖形上運行的LightDM幀率較低
參見 Intel graphics#AccelMethod。
Pulseaudio 不自動啟動
當主目錄被加密時,在LightDM顯示之前出現了長時間的暫停
有些LightDM主題嘗試訪問位於HOME目錄下的用戶頭像。如果你的HOME目錄被加密了,LightDM就無法訪問它,並會卡住。為了防止這種情況發生,你可以選擇以下兩種方式之一:
- 將您的頭像按照 #更改頭像中的說明進行設置。
- 僅適用於 lightdm-gtk-greeter包:在
/etc/lightdm/lightdm-gtk-greeter.conf文件中設置hide-user-image = true。
啟動時停在 "[ OK ] Reached target Graphical Interface." 的位置
如果您修改了 /etc/nsswitch.conf 文件,可能會導致用戶和組的查找失敗。當 nsswitch.conf 文件的group行包含了 ldap 配置,但沒有在/etc/nslcd.conf 文件中設置nss_initgroups_ignoreusers ALLLOCAL 時,這種情況會發生。
Wayland會話無法正常工作,並且登錄界面中出現重複的GNOME條目
一些入口程序 (例如 lightdm-webkit2-greeter包) 不支持具有相同名稱的兩個會話 [1]。要檢查重複條目,可以執行以下操作:
$ ls -1 /usr/share/wayland-sessions /usr/share/xsessions
在 /usr/share/xsessions 中重命名重複的條目。例如:
# mv /usr/share/xsessions/gnome.desktop /usr/share/xsessions/gnome.desktop.disabled
登錄始終在第一次嘗試時出現段錯誤
按照 Network 頁面中的描述設置主機名。此外,還可以參考 FS#47694。
遇到無限登錄循環的問題
如果你陷入了一個循環,每次你輸入正確的用戶名和密碼後屏幕都變黑,然後又回到登錄界面,運行 rm ~/.Xauthority (或陷入困境用戶的有問題的 .Xauthority) 可能會解決這個問題。
另一個原因是這可能是因為您嘗試從頭開始重新創建 "lightdm.conf" 文件,而您的版本缺少了這行代碼:
session-wrapper=/etc/lightdm/Xsession
在這種情況下,lightdm 嘗試使用 "lightdm-session" 作為會話包裝器,而這個在 Arch Linux 上並不存在。
如果你的 lightdm.conf 文件包含你指定的 session-wrapper,但 lightdm 日誌顯示正在使用默認的會話包裝器,請確保您的 lightdm.conf 文件在啟動期間可用。例如,您可能創建了一個指向home目錄中文件的符號連結,但在 LightDM 服務啟動之前您的home目錄尚未被掛載。在這種情況下,LightDM 將回退到默認的會話包裝器。
Wayland 會話中輸入設備無法工作
當你啟動了一個 Wayland 會話,輸入設備有時可能無法工作,可以物理斷開並重新物理連接解決。參見 LightDM#63。
另外一種解決方法是通過在 /etc/lightdm/Xsession 中添加 sleep 1 來延遲 Wayland 合成器的啟動。參見 archlinux/packaging/packages/lightdm!4 以獲取針對 Arch 軟體包的提議解決方案。