LightDM
- 跨桌面 - 支持不同的桌面環境.
- 支持多種顯示技術(X,Mir,Wayland, ...).
- 輕量級 - 低內存使用,高性能.
- 支持訪客會話.
- 支持遠程登錄(請求 - XDMCP, VNC, 輸出 - XDMCP, PAM).
- 完善的測試組件.
- 低代碼複雜度.
更多關於LightDM的特點可以在這裏找到。
安裝[編輯 | 編輯原始碼]
Greeter[編輯 | 編輯原始碼]
使用 LightDM 可能需要安裝一個 greeter。 greeter 是提示用戶輸入憑據、讓用戶選擇一個會話等的圖形界面。在配置了自動登錄的情況下,可以不使用 greeter。否則需要安裝 xorg-server包 和至少一個下面的 greeter。
官方軟件倉庫包含如下 greeter:
- lightdm-gtk-greeter包: 被 LightDM 默認使用的 greeter, 除非用戶手動設置使用其他 greeter。
- lightdm-deepin-greeter (deepin-session-shell包): 由 深度 桌面提供。
- lightdm-pantheon-greeter包: 來自 ElementaryOS 項目的 greeter。
- lightdm-slick-greeter包: 比 lightdm-gtk-greeter包 更注重美化的 GTK greeter , 從 lightdm-unity-greeterAUR 分支發展而來, 被 Linux Mint 發行版默認使用。
- lightdm-webkit2-greeter包: 一個用 Webkit2 做主題引擎的 greeter, 取代了 lightdm-webkit-greeterAUR。
- lightdm-webkit-theme-litarvan包: 現代且功能齊全的 Webkit2 LightDM 主題。
其他的 greeter 可以從 AUR 安裝:
- lightdm-unity-greeterAUR: Ubuntu Unity 使用的 greeter。
- lightdm-mini-greeterAUR: 一個最小化可配置的單用戶 greeter。
- lightdm-webkit-theme-aetherAUR: 在 lightdm 和 lightdm-webkit2-greeter 上編寫的時尚、直接的 Arch Linux 主題登錄屏幕。
- lightdm-elephant-greeter-gitAUR: 默認情況下在 cage包 Wayland 合成器中運行的小而簡單的歡迎程序。
- web-greeterAUR: 一個高顏值的現代化 greeter,使用 PyQtWebEngine 作為主題,替代 lightdm-webkit2-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 的歡迎程序,以允許新用戶登錄系統。
$ 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
可以直接修改 LightDM 的配置文件,或者使用位於 /usr/lib/lightdm/lightdm/
的 lightdm-set-defaults
程序。想知道一些可用選項,執行:
$ man lightdm-set-defaults
然而一大部分變量要直接編輯配置文件而不是使用 lightdm-set-defaults
程序。
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 解析文件。 下面是一個可以生效的示例:
~/.Xmodmap
-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 的空白變體。
更改背景圖片/顏色[編輯 | 編輯原始碼]
如果您想使用一個純色 (非圖片) 的背景,只需將 background
變量設置為十六進制的顏色。
例如:
background=#000000
如果你想用圖像來代替,請看下文。
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
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
Unity greeter[編輯 | 編輯原始碼]
如果使用的是 lightdm-unity-greeterAUR,請修改 /usr/share/glib-2.0/schemas/com.canonical.unity-greeter.gschema.xml
,然後執行:
# glib-compile-schemas /usr/share/glib-2.0/schemas/
可以參考這個頁面。
Slick Greeter[編輯 | 編輯原始碼]
使用 lightdm-settingsAUR 圖形界面設置。
更改頭像[編輯 | 編輯原始碼]
首先確保已安裝 accountsservice包 軟件包,然後如下設置,把 username
替換為目標用戶的登錄名。文件名中不要加 .png 後綴。
- 編輯或創建
/var/lib/AccountsService/users/username
, 添加如下內容:
[User] Icon=/var/lib/AccountsService/icons/username.png
- 使用 96x96 PNG 圖表文件來創建
/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
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
要創建一個新的用戶帳戶,可以自動登錄,並且可以再次無需密碼登錄,可以創建一個同時屬於這兩個組的輔助成員的用戶,例如:
# 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 登錄[編輯 | 編輯原始碼]
請參考 Display manager#Run ~/.xinitrc as a session。
默認打開小鍵盤[編輯 | 編輯原始碼]
安裝 numlockx包, 編輯 /etc/lightdm/lightdm.conf
添加以下幾行:
/etc/lightdm/lightdm.conf
[Seat:*] greeter-setup-script=/usr/bin/numlockx on
Xfce4 下多用戶切換[編輯 | 編輯原始碼]
如果您使用 Xfce 桌面,在應用程式啟動器/Whisker Menu 的活動按鈕的多用戶切換功能會特別關注 gdmflexiserver 可執行程序以啟用自身。如果你提供了一個可執行 Shell 腳本 /usr/bin/gdmflexiserver
並且它包含
#!/bin/sh /usr/bin/dm-tool switch-to-greeter
如此 Xfce 下多用戶切換應該在 Lightdm 有效。
或者,如果您使用Whisker菜單,可以轉到屬性 -> 命令,並直接更改「切換用戶」命令為:
dm-tool switch-to-greeter
你也可從 XScreenSaver 鎖屏界面切換用戶 - 參見 XScreenSaver#LightDM.
默認會話[編輯 | 編輯原始碼]
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=
選項。
啟動後幾分鐘無響應[編輯 | 編輯原始碼]
您可能需要下載更多的熵。安裝並啟用haveged,參考以下方法。https://github.com/canonical/lightdm/issues/17
使用 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包 軟件包。參見 這個論壇帖子。
LigthDM 顯示在錯誤的顯示器上[編輯 | 編輯原始碼]
如果你使用的多顯示器,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 上並不存在。