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 上并不存在。

另见[编辑 | 编辑源代码]