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