LightDM

出自 Arch Linux 中文维基

LightDM 是一個跨桌面環境的顯示管理器。它的特點有:

  • 跨桌面 - 支持不同的桌面環境.
  • 支持多種顯示技術(X,Mir,Wayland, ...).
  • 輕量級 - 低內存使用,高性能.
  • 支持訪客會話.
  • 支持遠程登錄(請求 - XDMCP, VNC, 輸出 - XDMCP, PAM).
  • 完善的測試組件.
  • 低代碼複雜度.

更多關於LightDM的特點可以在這裡找到。

安裝[編輯 | 編輯原始碼]

安裝 lightdm.

提示:穩定版版本號是偶數(1.8, 1.10) 而開發版本號是奇數(1.9, 1.11). lightdm-develAUR 或者 lightdm-gitAUR 提供了開發版本。

Greeter[編輯 | 編輯原始碼]

使用 LightDM 可能需要安裝一個 greeter。 greeter 是提示用戶輸入憑據、讓用戶選擇一個會話等的圖形界面。在配置了自動登錄的情況下,可以不使用 greeter。否則需要安裝 xorg-server 和至少一個下面的 greeter。

官方軟體倉庫包含如下 greeter:

其他的 greeter 可以從 AUR 安裝:

可以通過配置文件的 [Seat:*] 設置修改 greeter:

/etc/lightdm/lightdm.conf
[Seat:*]
...
greeter-session=lightdm-你要用的greeter名-greeter
注意: 需要注意的一點是:對應 lightdm-pantheon-greeter 的配置文件是 io.elementary.greeter.conf, 而不是 lightdm-pantheon-greeter.conf

檢查有哪些 greeter-session 可用的一種辦法是列出 /usr/share/xgreeters 目錄中的文件; 每個「.desktop」文件代表一個可用的歡迎程序。 在這個例子中,lightdm-gtk-greeterlightdm-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

用戶切換[編輯 | 編輯原始碼]

警告: 如果使用 light-locker 或其他兼容 loginctl 的 屏幕鎖定程序,執行dm-tool lockdm-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 的配置文件,或者使用位於 /usr/lib/lightdm/lightdm/lightdm-set-defaults程序。想知道一些可用選項,執行:

$ man lightdm-set-defaults

然而一大部分變量要直接編輯配置文件而不是使用 lightdm-set-defaults 程序。

X 會話包裝器[編輯 | 編輯原始碼]

本文或本章節可能需要合併到Xprofile

附註: Duplicated information(在 Talk:LightDM 中討論)

如果是從 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
注意: 建議將 PNG 或 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.
注意: 確保創建的文件都是 644 權限,使用 chmod 來更正。

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會話的列表。

注意: GNOME 用戶, 更一般地 gnome-keyring 用戶需要把他們的密碼環設置一個空白密碼以自動禁用。

啟用無密碼交互登錄[編輯 | 編輯原始碼]

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
注意: GNOME用戶,以及gnome-keyring用戶,可能需要按照前一節末尾的說明啟用自動登錄。

要創建一個新的用戶帳戶,可以自動登錄,並且可以再次無需密碼登錄,可以創建一個同時屬於這兩個組的輔助成員的用戶,例如:

# useradd -mG autologin,nopasswdlogin -s /bin/bash username

啟用訪客會話[編輯 | 編輯原始碼]

注意: 啟用此功能後,訪客用戶將可以在您的系統中無需密碼訪問。

要在LightDM中啟用訪客會話(無需改變系統配置),你需要至少兩樣東西:

  1. guest-account-script:默認為 guest-account ,並且接受兩個命令:
    • add (創建一個臨時的訪客系統帳戶,並返回創建帳戶的用戶名)
    • remove account name (刪除相應的帳戶)
  2. 一個 autologin 組,需要將創建的訪客帳戶添加到其中(參考 /etc/pam.d/lightdm-autologin)

有兩個 AUR 軟體包可以在 lightdm 中啟用訪客會話:

隱藏系統和服務用戶[編輯 | 編輯原始碼]

為防止系統用戶出現在登錄界面,安裝可選依賴 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,這個設置接受 xy 變量,可以使用絕對值(pixels)或相對值(percent). 每個變量都可以增加一個額外的錨定位置 start, centerend,數值間用 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 隧道並連接到本地主機。

注意: 如果在打開 VNC 連接時遇到空白屏幕,請嘗試使用不同的 LightDM 登錄管理器。

使用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 不自動啟動[編輯 | 編輯原始碼]

參見 PulseAudio#Running

當主目錄被加密時,在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 上並不存在。

另見[編輯 | 編輯原始碼]