# LightDM (简体中文)

相关文章

- Display manager
- GDM
- KDM
- LXDM

翻译状态： 本文是英文页面 Lightdm 的翻译，最后翻译时间：2016-07-06，点击这里可以查看翻译后英文页面的改动。

LightDM 是一个跨桌面环境的显示管理器。它的特点有:

- 跨桌面 - 支持不同的桌面环境.
- 支持多种显示技术(X, Wayland, Mir, ...).
- 轻量级 - 低内存使用，高性能.
- 支持定制会话.
- 支持远程登录(XDMCP, VNC, XDMCP, 可插拔).
- 完善的测试组件.
- 低代码复杂度.

更多关于LightDM的特点可以在这里找到。

## 安装

安装 软件包 lightdm. 注意稳定版版本号是偶数的 (1.8, 1.10) 而开发版是奇数的 (1.9, 1.11). 开发版可以安装 lightdm-develAUR 或者 lightdm-bzrAUR.

### Greeter

可能需要安装一个 greeter。 greeter 是提示用户输入密码的 GUI 界面。如果配置了自动登录，可以不使用 greeter。参考的 greeter 是 lightdm-gtk-greeter，默认的配置会使用它。

官方软件仓库包含如下 greeter:

- lightdm-kde-greeter: KDE4 greeter.
- lightdm-deepin-greeter (deepin-session-ui): Deepin 桌面提供.

其他的 greeter 可以从 AUR 安装:

- lightdm-webkit2-greeterAUR: 一个用 Webkit2 做主题引擎的 greeter. 替代 lightdm-webkit-greeterAUR。
- lightdm-unity-greeterAUR: Ubuntu Unity 使用的 greeter.
- lightdm-pantheon-greeterAUR: 一个来自 ElementaryOS Project 的 greeter.

你可以通过更改配置文件的 `[Seat:*]` 部分设置 greeter:

    /etc/lightdm/lightdm.conf

    [Seat:*]
    ...
    greeter-session=lightdm-yourgreeter-greeter

通过下面命令可以获取 `greeter-session` 的可用选项，`/usr/share/xgreeters` 目录下的每个 `.desktop` 目录都代表一个可用 greeter。下面例子中包含 `lightdm-gtk-greeter` 和 `lightdm-kde-greeter`:

    $ ls -1 /usr/share/xgreeters/
    lightdm-gtk-greeter.desktop
    lightdm-kde-greeter.desktop

## 启用 LightDM

确保使用 systemctl 启用 `lightdm.service`, 如此 LightDM 将会开机启动。参考 Display manager#Loading the display manager。

## 命令行工具

LightDM 提供一个命令行工具, `dm-tool`. 它可用来锁定当前 seat, 切换会话，等等。这对'极简'窗口管理器和测试非常有用。要列出可用命令，运行:

    $ dm-tool --help

## 测试

首先，安装 软件包 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-webkit2-greeterAUR: `/etc/lightdm/lightdm-webkit2-greeter.conf`
- lightdm-kde-greeter: `/etc/lightdm/lightdm-kde-greeter.conf`

可以直接修改 LightDM 的配置文件，或者使用位于 `/usr/lib/lightdm/lightdm/` 的 `lightdm-set-defaults`程序。想知道一些可用选项，执行:

    $ man lightdm-set-defaults

然而一大部分变量要直接编辑配置文件而不是使用 `lightdm-set-defaults` 程序。

### 更改背景图片/颜色

如果您想使用一个纯色 (非图片) 的背景，只需将 `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 用户需要有背景文件的读取权限。

#### Webkit2 greeter

The lightdm-webkit2-greeterAUR allows you to choose a background image directly on the login screen. It also offers an option to display a random image each time it starts. By default, images are sourced from `/usr/share/backgrounds`. You can change the background images directory by editing `lightdm-webkit2-greeter.conf`. For example:

    /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/

可以参考这个页面。

#### KDE greeter

转到 系统设置 > 登录界面 (LightDM) 设置你的主题与背景图片。

### 改变你的头像

Tip: If you are using KDE, you can change your avatar in KDE System Settings.

首先确保已安装 accountsservice 软件包，然后如下设置，把 `username` 替换为目标用户的登录名。文件名中不要加 .png 后缀。

- 编辑或创建 `/var/lib/AccountsService/users/username`, 添加如下内容:

    [User]
    Icon=/var/lib/AccountsService/icons/username

I

- 使用 96x96 PNG 图表文件来创建 `/var/lib/AccountsService/icons/username`.

注意: 确保创建的文件都是 644 权限，使用 chmod 来更正。

### Arch 为中心的 64x64 图标来源

AUR 的 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:*]
    pam-service=lightdm
    pam-autologin-service=lightdm-autologin
    autologin-user=username
    autologin-user-timeout=0
    session-wrapper=/etc/lightdm/Xsession

即使 `autologin` 已启用, LightDM 也会经由 PAM验证 。你必须是 `autologin` 组的成员来使得自己登录时不用输入密码:

    # groupadd autologin
    # gpasswd -a username autologin

注意: GNOME 用户, 更一般地 gnome-keyring 用户需要把他们的密码环设置一个空白密码以自动禁用。

### 启用无密码交互登录

LightDM goes through PAM so you must configure the lightdm configuration of PAM:

    /etc/pam.d/lightdm

    #%PAM-1.0
    auth        sufficient  pam_succeed_if.so user ingroup nopasswdlogin
    auth        include     system-login
    ...

You must then also be part of the `nopasswdlogin` group to be able to login interactively without entering your password:

    # groupadd -r nopasswdlogin
    # gpasswd -a username nopasswdlogin

Note: GNOME users, and by extension any gnome-keyring user may have to follow the instructions at the end of the previous section on enabling autologin.

To create a new user account that logs in automatically and additionally able to login again without a password the user can be created with supplementary membership of both groups, e.g.:

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

### 隐藏系统和服务用户

为防止系统用户出现在登录界面，安装可选依赖 accountsservice, 或者把这些用户名添加到 `/etc/lightdm/users.conf` 下的 `hidden-users` 里。前者优势在于添加/删除用户时不用更新列表。

### 从 SLiM 迁移

把 xinitrc 的内容搬到 xprofile, 删除调用窗口管理器或桌面环境的部分。

### 默认打开小键盘

安装 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 有效。

Alternatively, if you use the Whisker Menu, you can go to Properties -> Commands and change the "Switch Users" command directly to:

     dm-tool switch-to-greeter

你也可从 XScreenSaver 锁屏界面切换用户 - 参见 XScreenSaver#Lightdm[broken link: invalid section].

### 默认会话

Lightdm, 像其他 DM 一样，把上次选择的 xsession 存储在 `~/.dmrc`. 更多信息见 Display manager#Session_list[broken link: invalid section].

### 修改登录窗口的位置

#### GTK+ greeter

编辑 `/etc/lightdm/lightdm-gtk-greeter.conf` 文件，设置 `position`，这个设置接受 `x` 和 `y` 变量，可以使用绝对值(pixels)或相对值(percent). 每个变量都可以增加一个额外的锚定位置 `start`, `center` 和 `end`，数值间用 comma 分隔.

Example:

    position=200,start 50%,center

## 疑难问题

如果你一直屏幕闪烁并且启动后没有 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

### Xresources 未被正常解析

当你的 Xresources 文件未被预处理器加载时，会导致一个 LightDM 的上游 bug. 在实际中，这意味着使用 `#define` 设置的变量在之后调用时没有被扩展。如果你使用 urxvt 的自定义颜色时，这会表现为一个全粉色的屏幕。要修复，编辑 `/etc/lightdm/Xsession` 并搜索以下内容:

    xrdb -nocpp -merge "$file"

更改为读取:

    xrdb -merge "$file"

你的 Xresources 会正常加载并且变量会正常扩展。

### 使用 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 HDMI1 --primary

替换 HDMI1 为你的正确的显示器 ID, 可从 xrandr 命令输出获取。

### LightDM 不出现

可能系统启动太快了，LightDM 服务在图形驱动加载前就启动了。如果是这样，将下面配置加入 lightdm.conf 文件:

       [LightDM]
       logind-check-graphical=true

设置后 LightDM 会等待图形驱动加载完成后再启动 greeters/autostarting 会话。

### Pulseaudio 不自动启动

见 PulseAudio#Running。

## 另见

- light-locker, a screen locker using LightDM.
- Ubuntu Wiki article
- Gentoo Wiki article
- Launchpad Page
- LightDM blog

Category:

- Display managers (简体中文)

Hidden category:

- Pages with broken section links