LightDM
- 跨桌面 - 支持不同的桌面技术。
- 支持不同的显示技术 (X, Mir, Wayland ...)。
- 轻量级 - 低内存占用和高性能。
- 支持访客会话。
- 支持远程登录(传入 - XDMCP, VNC, 传出 - XDMCP, PAM)。
- 全面的测试套件。
- 低代码复杂度。
关于 LightDM 设计的更多细节可以在这里找到。
安装
安装 lightdm 软件包或 lightdm-gitAUR 以获取开发版本。
Greeter
您可能需要安装一个 greeter。Greeter 是一个 GUI,用于提示用户输入凭据,让用户选择会话等等。可以在没有 greeter 的情况下使用 LightDM,但前提是配置了自动登录;否则您需要安装 xorg-server 和以下 greeter 软件包之一。
基于 GTK 的 greeter
- LightDM GTK Greeter — 一个用于 LightDM 的 GTK greeter。这是 LightDM 尝试使用的默认 greeter,除非另有配置。
- lightdm-pantheon-greeter — 来自 elementary OS 项目的 greeter。
- slick-greeter — 一个基于 GTK 的 greeter,比 lightdm-gtk-greeter 更注重外观,最初从 Unity greeter 分叉而来,是 Linux Mint 中的默认 greeter。
- Web Greeter for LightDM — 一个使用 Webkit2 进行主题化的 greeter。该项目的开发已于 2019-05-22 停止。
- Mini-Greeter — 一个最小化、可配置的单用户 GTK3 greeter。
- Nody Greeter — LightDM greeter,允许使用 Web 技术创建精美的主题。使用 Node.js、Electron.js 和 NodeGTK 构建。
基于 Qt 的 greeter
- Web Greeter — 一个现代、视觉上吸引人的 greeter,使用 PyQtWebEngine 进行主题化。它取代了 lightdm-webkit2-greeter
- LightDM KDE Greeter — KDE 的一个 LightDM greeter。
其他 greeter
- lightdm-deepin-greeter — 来自 Deepin 项目的 greeter。
- LightDM Elephant Greeter — 一个小巧而简单的 greeter,默认在 cage Wayland 合成器中运行。
- Litarvan's LightDM WebKit2 theme — 一个现代且功能齐全的主题。
- Aether — 一个简洁、直观的 Arch Linux 主题登录界面。
web-greeterAUR 和 nody-greeterAUR 的主题
- Shikai — 美观、可自定义的主题。
您可以通过更改 LightDM 配置文件的 [Seat:*]
部分来设置默认 greeter,如下所示
/etc/lightdm/lightdm.conf
[Seat:*] ... greeter-session=lightdm-yourgreeter-greeter ...
检查哪些 greeter 可用的方法之一是列出 /usr/share/xgreeters
目录中的文件;每个 .desktop 文件代表一个可用的 greeter。在此示例中,lightdm-gtk-greeter
和 lightdm-webkit2-greeter
greeter 可用
$ ls -1 /usr/share/xgreeters/
lightdm-gtk-greeter.desktop lightdm-webkit2-greeter.desktop
启用 LightDM
确保启用 lightdm.service
,以便 LightDM 将在启动时启动;另请参阅 Display manager#加载显示管理器。
命令行工具
LightDM 提供了一个命令行工具 dm-tool
,可用于锁定当前会话,切换会话等,这对于“极简主义”窗口管理器和测试非常有用。要查看可用命令的列表,请执行
$ dm-tool --help
用户切换
dm-tool lock
或 dm-tool switch-to-greeter
)很容易被绕过,如果没有 light-locker 或其他 loginctl 兼容的屏幕锁定器,则无法锁定您的会话。请参阅 XScreenSaver#从锁定屏幕切换用户。LightDM 的 dm-tool 命令可用于允许多个用户在不同的 tty 上登录。以下命令将发送一个信号,请求锁定当前会话,然后启动切换到 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 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/键盘配置#设置键盘布局。
在 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 的空白变体。
更改背景图片/颜色
您可以将背景设置为十六进制颜色或图像。一些 greeter 提供更强大的背景选项,例如从登录屏幕选择背景、随机背景等。
GTK greeter
您可以使用 lightdm-gtk-greeter-settings gui。
希望自定义 greeter 屏幕上的壁纸的用户需要编辑 /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 缩放 设置。该值可以通过在 Xorg 中使用 xdpyinfo | grep dots
获得,例如。
Webkit2 greeter
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 Greeter
使用 lightdm-settingsAUR GUI
更改您的头像
首先,确保安装了 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 -r autologin # gpasswd -a username autologin
LightDM 使用自动登录用户的 ~/.dmrc
中指定的会话登录。要覆盖此文件,请在 lightdm.conf
中指定 autologin-session
/etc/lightdm/lightdm.conf
[Seat:*] autologin-user=username autologin-session=session
有效的会话名称列表可以通过列出 X 会话的 /usr/share/xsessions/*.desktop
和 Wayland 会话的 /usr/share/wayland-sessions/*.desktop
找到。
启用交互式免密码登录
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 帐户名(删除相应的帐户)
- 一个 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#将 ~/.xinitrc 作为会话运行。
默认启用 NumLock
安装 numlockx 软件包,然后编辑 /etc/lightdm/lightdm.conf
/etc/lightdm/lightdm.conf
[Seat:*] greeter-setup-script=/usr/bin/numlockx on
默认会话
Lightdm,与其他 DM 一样,将上次选择的 xsession 存储在 ~/.dmrc
中。有关更多信息,请参阅 Display manager#会话配置。
调整登录窗口的位置
GTK greeter
用户需要编辑 /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#在客户端上 中所述。
使用 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 文件。
如果上次使用的会话不再可用(例如,您上次使用了 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
此示例将会话 “xfce” 设置为用户 1000 的默认会话。
显示错误的区域设置
如果您的区域设置在 Lightdm 中未正确显示,请将您的区域设置添加到 /etc/environment
LANG=pt_PT.utf8
或者,如果您希望 LightDM 及其 greeter 使用除您设置的系统区域设置之外的语言,您可以使用 Systemd#Drop-in 文件 中的 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 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 无法访问它并会挂起。为了防止这种情况发生,您可以
- 按照 #更改您的头像 中的说明设置您的头像
- 仅适用于 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
首次尝试时,登录总是发生段错误
按照 Network configuration#Set the hostname 中的说明设置主机名。另请参阅 FS#47694。
无限登录循环
如果您陷入循环,在循环中您输入正确的用户名和密码,但屏幕变黑,然后每次尝试后您都返回到登录提示符,则运行 rm ~/.Xauthority
(或卡住用户的有问题 .Xauthority
)可能会解决此问题。
另一个原因可能是您尝试从头开始重新创建“lightdm.conf”,而您的版本缺少此行
session-wrapper=/etc/lightdm/Xsession
在这种情况下,lightdm 尝试使用“lightdm-session”作为 session-wrapper,而该文件在 Arch Linux 上不存在。
如果您的 lightdm.conf 文件包含预期的 session-wrapper,但 lightdm 日志表明正在使用默认的会话包装器,请确保您的 lightdm.conf 文件在启动时可用。例如,您可能已创建指向主目录中文件的符号链接,但您的主目录未在 LightDM 服务启动之前挂载。在这种情况下,LightDM 将回退到默认的会话包装器。
输入设备在 Wayland 会话中不起作用
当启动 Wayland 会话时,输入设备有时可能无法工作,除非断开并重新连接物理连接。请参阅 LightDM issue 63。
一种解决方法是将 sleep 1
添加到 /etc/lightdm/Xsession
以延迟 Wayland 合成器的启动。请参阅 archlinux/packaging/packages/lightdm!4,了解 Arch 包的建议解决方法。