LightDM
- 跨桌面 - 支持不同的桌面技术。
- 支持不同的显示技术(X、Mir、Wayland ...)。
- 轻量级 - 内存占用少,性能高。
- 支持访客会话。
- 支持远程登录(入站 - XDMCP,VNC,出站 - XDMCP,PAM)。
- 全面的测试套件。
- 低代码复杂度。
有关 LightDM 设计的更多详细信息,请在此 处查阅。
安装
登录器
您可能需要 安装一个登录器。登录器是一个图形用户界面,用于提示用户输入凭据、允许用户选择会话等。可以不使用登录器而使用 LightDM,但前提是配置了自动登录;否则,您需要安装 xorg-server 和下面的一个登录器包。
基于 GTK 的登录器
- LightDM GTK Greeter — LightDM 的 GTK 登录器。这是 LightDM 尝试使用的 **默认** 登录器,除非另有配置。
- lightdm-pantheon-greeter — 来自 elementary OS 项目的登录器。
- slick-greeter — 一个基于 GTK 的登录器,比 lightdm-gtk-greeter 更注重外观,最初是 Unity 登录器的分支,并且是 Linux Mint 的默认设置。
- Web Greeter for LightDM — 一个使用 Webkit2 进行主题化的登录器。**该项目自 2019-05-22 起已停止开发。**
- Mini-Greeter — 一个最小化、可配置的、单用户 GTK3 登录器。
- Nody Greeter — LightDM 登录器,允许使用 Web 技术创建精美的。使用 Node.js、Electron.js 和 NodeGTK 构建。
基于 Qt 的登录器
- Web Greeter — 一个现代、视觉吸引人的登录器,使用 PyQtWebEngine 进行主题化。它取代了 lightdm-webkit2-greeter
- LightDM KDE Greeter — KDE 的 LightDM 登录器。
其他登录器
- lightdm-deepin-greeter — 来自 Deepin 项目的登录器。
- LightDM Elephant Greeter — 一个小巧简单的登录器,默认在 cage Wayland 合成器中运行。
- Litarvan's LightDM WebKit2 theme — 一个现代、功能齐全的主题。
- Aether — 一个时尚、简洁的 Arch Linux 主题登录屏幕。
用于 web-greeterAUR 和 nody-greeterAUR 的主题
- Shikai — 美学、可定制的主题。
您可以通过修改 LightDM 配置文件中的 [Seat:*] 部分来设置默认登录器,如下所示:
/etc/lightdm/lightdm.conf
[Seat:*] ... greeter-session=lightdm-yourgreeter-greeter ...
检查可用登录器的一种方法是列出 /usr/share/xgreeters 目录中的文件;每个 .desktop 文件代表一个可用的登录器。在此示例中,lightdm-gtk-greeter 和 lightdm-webkit2-greeter 登录器是可用的。
$ ls -1 /usr/share/xgreeters/
lightdm-gtk-greeter.desktop lightdm-webkit2-greeter.desktop
启用 LightDM
确保 启用 lightdm.service,以便 LightDM 在启动时启动;另请参阅 Display manager#Loading the display manager。
命令行工具
LightDM 提供了一个命令行工具 dm-tool,可用于锁定当前会话、切换会话等,这对于“极简主义”窗口管理器和测试很有用。要查看可用命令列表,请执行:
$ dm-tool --help
用户切换
dm-tool lock 或 dm-tool switch-to-greeter)很容易被绕过,并且在没有 light-locker 或其他 loginctl 兼容的屏幕锁定器 的情况下不会锁定您的会话。请参阅 XScreenSaver#User switching from the lock screen。LightDM 的 dm-tool 命令可用于允许多个用户在不同的 tty 上登录。以下命令将发送一个信号,请求锁定当前会话,然后启动切换到 LightDM 的登录器,允许新用户登录系统。
$ dm-tool switch-to-greeter
测试
首先,安装 xorg-server-xephyr。
然后,将 LightDM 作为 X 应用程序运行:
$ lightdm --test-mode --debug
可选配置与调整
可以通过修改 LightDM 的配置文件 /etc/lightdm/lightdm.conf 来进行配置。
某些登录器有自己的配置文件。例如:
lightdm-gtk-greeter:/etc/lightdm/lightdm-gtk-greeter.conf(或者您可以使用 lightdm-gtk-greeter-settings GUI)。
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。如果找不到这些文件,它会使用 /etc/X11/Xmodmap、~/.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/Keyboard configuration#Setting keyboard layout。
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 及其变体 neo,后者作为首选:
# localectl --no-convert set-x11-keymap de,de pc105 neo,
注意,后面的逗号表示第二个 de 的空白变体。
更改背景图片/颜色
您可以将背景设置为十六进制颜色或图片。某些登录器提供更强大的背景选项,例如从登录屏幕选择背景、随机背景等。
GTK 登录器
您可以使用 lightdm-gtk-greeter-settings GUI。
希望自定义登录器屏幕上壁纸的用户需要编辑 /etc/lightdm/lightdm-gtk-greeter.conf 并在 [greeter] 部分定义 background 变量。例如:
/etc/lightdm/lightdm-gtk-greeter.conf
[greeter] background=/usr/share/pixmaps/black_and_white_photography-wallpaper-1920x1080.jpg
/usr/share/pixmaps 中,因为 LightDM 用户需要对壁纸文件有读取权限。GTK3 主题可以通过 [greeter] 部分中的 theme-name 变量指定。图标和光标主题可以以相同方式设置,如下例所示:
/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 配置
在 HiDPI 或 4K 显示器上开箱即用 lightdm-gtk-greeter 会导致文本和对话框非常小,可以通过这种方式强制设置 DPI:
/etc/lightdm/lightdm-gtk-greeter.conf
[greeter] xft-dpi = 192
在这种情况下,“192”表示屏幕 96 DPI 设置的两倍,这等同于其他图形环境中的2X Scale设置。可以使用 Xorg 中的 xdpyinfo | grep dots 来获取该值,例如。
Webkit2 登录器
lightdm-webkit2-greeter 允许您直接在登录屏幕上选择背景图片。如果您使用 Material theme,它还提供了一个每次启动时显示随机图片的选项。默认情况下,图片来自 /usr/share/backgrounds。您可以通过编辑 lightdm-webkit2-greeter.conf 来更改背景图片目录。例如:
/etc/lightdm/lightdm-webkit2-greeter.conf
[branding] background_images = /usr/share/backgrounds
/home 下的任何位置。Slick 登录器
使用 lightdm-settingsAUR GUI
更改您的头像
首先,确保安装了 accountsservice 包,然后按如下方式设置它,将 username 替换为所需用户的登录名。
- 创建文件
/var/lib/AccountsService/icons/username.png,使用 96x96 的 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 -r 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 进行身份验证,因此您必须配置 PAM 的 lightdm 配置:
/etc/pam.d/lightdm
#%PAM-1.0 auth sufficient pam_succeed_if.so user ingroup nopasswdlogin auth include system-login ...
然后您还必须属于 nopasswdlogin 组和 autologin 组,以便能够交互式地登录而不输入密码。
# groupadd -r nopasswdlogin # groupadd -r autologin # gpasswd -a username nopasswdlogin # gpasswd -a username autologin
要创建一个新用户账户,该账户将自动登录并且还能够无密码再次登录,该用户可以被创建为这两个组的附加成员,例如:
# useradd -mG autologin,nopasswdlogin 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。
默认启用 NumLock
安装 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 登录器
用户需要编辑 /etc/lightdm/lightdm-gtk-greeter.conf 并为 position 变量输入一个值。它接受 x 和 y 值,可以是绝对值(像素)或相对值(百分比)。每个值还可以有一个额外的窗口锚定位置,start、center 和 end,用逗号与值分隔。
示例
position=200,start 50%,center
VNC 服务器
Lightdm 也可以通过 VNC 进行连接。确保在服务器端安装 tigervnc,并在客户端 PC 上选择性地作为 VNC 客户端。
在服务器上作为 root 设置身份验证密码:
# vncpasswd /etc/vncpasswd
像下面这样编辑 LightDM 配置文件。请注意,listen-address 配置 VNC 只监听来自 localhost 的连接。这用于仅允许通过 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
现在打开一个 SSH 隧道并连接到 localhost,如 TigerVNC#On the client 中所述。
使用 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 的配置文件中正确定义了登录器。如果您已正确定义了 GTK 登录器,请确保 xsessions-directory(默认:/usr/share/xsessions)存在并且至少包含一个 .desktop 文件。
如果最后一个使用的会话不再可用(例如,您上次使用 gnome,然后删除了 gnome-session 包),在 lightdm 启动时可能会出现相同的错误;最简单的解决方法是暂时恢复已删除的包。另一个解决方案可能是:
# 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 及其登录器使用非系统默认区域设置的语言,您可以在 drop-in file 中使用 Environment= 选项。
GTK 登录器图标缺失
如果您将 lightdm-gtk-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 greeter,您可以编辑 /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 在它们上生成 greeter/自动启动会话之前等待图形设备就绪。
对于新版本的 LightDM,这已经是默认设置。 因此,在某些硬件上,您的图形驱动程序可能未被正确检测,LightDM 可能永远不会尝试启动 greeter——即使在系统启动稳定后也是如此。如果发生这种情况,将其设置为 false 将禁用此检查,并强制 LightDM 无论如何启动 greeter。
LightDM 在 Intel 图形上以低 FPS 运行
请参阅 Intel graphics#AccelMethod。
PulseAudio 未自动启动
请参阅 PulseAudio#Running。
加密的 HOME 目录在 LightDM 显示之前有很长的停顿
一些 LightDM 主题会尝试访问位于 HOME 的用户头像。如果您的 HOME 已加密,LightDM 将无法访问它并挂起。为防止这种情况发生,您可以:
- 按照 #Changing your avatar 中的说明设置您的头像
- 仅适用于 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 会话在 greeter 中出现重复的 GNOME 条目时无法正常工作
一些 greeter(例如 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
登录时第一次尝试总是 segfault
按照 Network configuration#Set the hostname 中的说明设置主机名。另请参阅 FS#47694。
无限登录循环
如果您输入正确的用户名和密码后,屏幕变黑,然后每次尝试都返回登录提示,陷入循环,运行 rm ~/.Xauthority(或该用户有问题的 .Xauthority)可能会解决此问题。
这可能是因为您尝试从头开始重新创建 "lightdm.conf" 文件,而您的版本缺少这一行:
session-wrapper=/etc/lightdm/Xsession
在这种情况下,lightdm 会尝试使用 "lightdm-session" 作为会话包装器,而该包装器在 Arch Linux 上不存在。
如果您的 lightdm.conf 文件包含预期的会话包装器,但 lightdm 日志表明正在使用默认会话包装器,请确保您的 lightdm.conf 文件在启动时可用。例如,您可能在主目录中创建了一个文件的符号链接,但在 LightDM 服务启动之前,您的主目录尚未挂载。在这种情况下,LightDM 将回退到默认的会话包装器。
Wayland 会话中输入设备无法工作
启动 Wayland 会话时,输入设备有时可能无法工作,除非断开并重新连接物理连接。请参阅 LightDM issue 63。
一种解决方法是延迟 Wayland 合成器的启动,在 /etc/lightdm/Xsession 中添加 sleep 1。请参阅 archlinux/packaging/packages/lightdm!4,其中提供了 Arch 包的建议解决方法。