LightDM简介

LightDM

简介

LightDM(Light Display Manager)是一个全新的轻量级 Linux 桌面显示管理器,而传统的 Ubuntu 是使用 GNOME 桌面标准的 GDM

LightDM 是一个跨桌面显示管理器,其目的是成为 X org 的 X Server 的标准显示管理器。

LightDM 是 2010 年开始的新项目,且被设计为轻量、小巧、快速。相较于 GDM-GTK, KDM-Qt,LightDM 实际上与界面无关,它仅支持本地图形界面获得最好兼容性。

Ubuntu 中运行的 LightDM 负责启动 X servers,用户会话和欢迎界面。Ubuntu 默认的欢迎界面是 Unity Greeter。

主要特点

  • 轻量:LightDM是2010年开始的新项目,一开始就设计为轻量、小巧,没有GDM那样的历史代码负担,因此不仅完整支持标准,而且轻量、快速。
  • 支持各种界面:相较于GDM-GTK,KDM-Qt,LightDM实际上是界面无关性的,因为它设计上就是支持本地图形界面以获得最好的兼容性。因此LightDM已经具备了GTK、Qt甚至WebKit的界面,也就是用HTML来做登陆界面。
  • 可配置性:Linux最大的优势就是定制性强了,LightDM也继承了这一优点,除了可以定制上面提到的界面以外,LightDM还可以定制其他丰富的选项,如自动登录、禁止特定用户登录等等
  • 一个支持多个图形用户界面的良好的 API
  • 代码复杂度低
  • 性能

目前LightDM已经从freedesktop转移至canonical(ubutnu公司)维护的github仓库:https://github.com/canonical/lightdm

在这里插入图片描述

从仓库的信息来看,以C 语言为主。

但是随着Ubuntu桌面从Unity转向Gnome,DM也从lightdm转向了GDM。Ubuntu17之后DM默认转成GDM了。

目前UOS上的lightdm版本为:1.26.0,是2018年发布的版本(但uos改了代码应该);kylin2101:1.18.3,是2016年发布的版本;kylin2107:1.30.0,是2019年发布的版本

编译

编译准备

sudo apt install gtk-doc-tools yelp-tools libglib2.0-dev intltool libpam0g-dev libxklavier-dev
  1. ./autogen.sh

  2. ./configure

  3. make

  4. make install 实测UOS上编译完安装黑屏进不去图形界面

LightDM 相关操作

  • 切换命令行:alt-ctrl-F1
  • LightDM 日志:/var/log/lightdm
  • 关停 LightDM:sudo systemctl stop lightdm
  • 启动 LightDM:sudo systemctl start lightdm
  • 设置 LightDM 为默认显示管理器:sudo dpkg-recofigure lightdm

配置文件

LightDM的配置文件包括:

# ubuntu
/usr/share/lightdm/lightdm.conf.d/*.conf
# /etc/lightdm/lightdm.conf.d/*.conf
/etc/xdg/lightdm/lightdm.conf.d/*.conf
/usr/local/share/lightdm/lightdm.conf.d/*.conf
/etc/lightdm/lightdm.conf

UOS

/usr/share/lightdm/lightdm.conf.d
/usr/local/share/lightdm/lightdm.conf.d	# 这个路径一般默认没有
/etc/xdg/lightdm/lightdm.conf.d	# 这个路径一般默认没有
/etc/lightdm/lightdm.conf

在这里插入图片描述

# ls /etc/lightdm/ -lh
总用量 20K
-rw-r--r-- 1 root root   40 39  2021 keys.conf
-rw-r--r-- 1 root root 6.9K 119 18:36 lightdm.conf
-rw-r--r-- 1 root root 3.0K 39  2021 lightdm-gtk-greeter.conf
-rw-r--r-- 1 root root  466 39  2021 users.conf
# tree /usr/share/lightdm/
/usr/share/lightdm/
├── lightdm.conf.d
│   ├── 01_debian.conf
│   ├── 50-est-raserverscreenagrentsvr.conf
│   └── 60-deepin.conf
└── lightdm-gtk-greeter.conf.d
    └── 01_debian.conf

kylin2101

/usr/share/lightdm/lightdm.conf.d
/usr/local/share/lightdm/lightdm.conf.d
/etc/xdg/lightdm/lightdm.conf.d
/etc/lightdm/lightdm.conf

在这里插入图片描述

# tree /usr/share/lightdm
/usr/share/lightdm
├── guest-session
│   ├── setup.sh
│   └── skel
└── lightdm.conf.d
    ├── 50-disable-log-backup.conf
    ├── 50-est-raserverscreenagrentsvr.conf
    ├── 50-greeter-wrapper.conf
    ├── 50-guest-wrapper.conf
    ├── 50-xserver-command.conf
    ├── 60-kylin.conf
    └── 95-ukui-greeter.conf

ubuntu

在这里插入图片描述

系统使用的配置参数保存在 /usr/share/lightdm/lightdm.conf.d/*.conf,用户不能编辑。系统管理员可以在 /etc/lightdm/lightdm.conf.d/*.conf/etc/lightdm/lightdm.conf 重载系统配置参数。系统会依次读取前述的三个文件最后得到 LightDM 的有效配置信息。
例如,如果你想要自动登录的话(默认配置保存在 /usr/share/lightdm/lightdm.conf.d/50-ubuntu.conf),你可以新建文件 /etc/lightdm/lightdm.conf.d/90-czw.conf,内容如下:

[SeatDefaults]
autologin-user=czw

重启后,查看lightdm日志可以看出已经加载了自定义配置文件:
在这里插入图片描述

/usr/share/doc/lightdm/lightdm.conf.gz 文件中保存着所有可能的配置情况示例。
另一个配置文件:/etc/lightdm/users.conf,但是如果accountsservice服务运行了,系统会忽略该配置文件。

配置应用

禁止访客登录

LightDM 默认允许你以临时访客登录,禁止该功能:

[SeatDefaults]
allow-guest=false

隐藏用户列表

Unity Greeter(其他类似欢迎界面也一样)默认显示一个用户列表。如果你想禁用该功能,可以使用以下配置,以下配置也可以用以启动手动登录。

[SeatDefaults]
greeter-hide-users=true

允许手动登录

Unity Greeter 默认不允许你输入用户名来登录。你可以使用以下配置启用该特性。

[SeatDefaults]
greeter-show-manual-login=true

设置自动登录

设置 autologin-user 来设置系统启动时自动登录某个帐户。设置 autologin-user-timeout 限制用户在设定秒内如果没有自动登录则不能自动登录

[SeatDefaults]
autologin-user=username
autologin-user-timeout=delay

设置自动登录访客账号。

autologin-guest=true

修改默认会话

默认会话设置保存在 /usr/share/lightdm/lightdm.conf.d/ 会话包中,可以通过以下配置来覆盖:

[SeatDefaults]
user-session=name

其中 name 代表 /usr/share/xsessions/*.desktop<name>.desktop

修改欢迎界面

欢迎界面由 /usr/share/lightdm/lightdm.conf.d/ 中欢迎界面包提供。你可以重载该设置

[SeatDefaults]
greeter-session=name

其中 name 代表 /usr/share/xgreeters/*.desktop 中的 <name>.desktop 文件。

添加系统钩子

如果你想在 X servers 和用户会话启动/关停时自动做些事情,那么可以按照以下方式设置自动执行命令

[SeatDefaults]
display-setup-script=command
display-stopped-script=command (Not in Ubuntu 12.04 LTS)
greeter-setup-script=command
session-setup-script=command
session-cleanup-script=command
session-wrapper=command
greeter-wrapper=command (Not in Ubuntu 12.04 LTS)

display-setup-script 在X服务器启动后、用户会话/greeter程序运行之前运行。如果需要在X服务器中配置任何特殊内容,请设置此选项。它作为root运行。如果该命令返回错误代码,则X服务器将停止。

display-stopped-script在X服务器退出后以root身份运行。

greeter-setup-script 是在greeter开始前运行的。它作为root运行。如果该命令返回一个错误代码,引导程序将无法启动(这将导致LightDM停止)。

session-setup-script在用户会话开始之前运行。如果这个命令返回一个错误,会话将不会启动(用户返回到一个greeter界面)。

session-cleanup-script在greeter或者用户会话停止时运行,以root身份运行。

session-wrapper 是为会话运行的命令。此命令作为用户运行,需要执行参数中传递的命令以完成会话的运行。如果需要为用户会话进行特殊设置,请使用此选项。注意,默认值是lightdm-session,因此如果需要覆盖该设置,应该链接到该设置。

greeter-wrapper 是一个运行greeter的命令行。它相当于greeter的session-wrapper

修改壁纸

LightDM 并不会修改greeter的外观,如果需要配置可以修改对应的greeter属性。

Unity Greeter 默认显示当前选中的用户的背景图案。设置默认背景,并停止背景切换,编辑 /usr/share/glib-2.0/schemas/10_unity_greeter_background.gschema.override

[com.canonical.unity-greeter]
draw-user-backgrounds=false
background='/foo/wallpaper.png'

然后运行 sudo glib-compile-schemas /usr/share/glib-2.0/schemas/ 使配置生效。

如果使用的是 LightDM GTK+ 欢迎界面,编辑 /etc/lightdm/lightdm-gtk-greeter.conf

background=/usr/share/lubuntu/wallpapers/lubuntu-default-wallpaper.png

该方法在ubuntu中可以生效,但是在其他系统比如UOS中,需要找到schema的具体配置文件,之后进行覆盖配置。

怎么调试

安装调试工具

  • sudo apt-get install xserver-xephyr
  • 通过lightdm --test-mode --debug 启动lightdm的调试模式
  • 使用dm-tool进行调试。(dm-tool是lightdm提供了命令行控制工具,可以控制lightdm进行用户切换、锁定等。)
    dm-tool的OPTIONS中的–session-bus是控制dm-tool发出的命令 控制的是系统会话还是调试模式的会话。

报告问题

存档一个BUG可以从终端运行下面的命令行:

ubuntu-bug lightdm

所有合适、合法的信息、日志都会添加到错误报告中。

graphics stack(图形堆栈)中很多事情都可能出错。如果你看不到任何图形或者损坏的图片,下列尝试也许可以帮助你:

  1. 你可以按ctrl+alt+f1得到文本终端
  2. 检查LightDM的日志,位于/var/log/lightdm
  3. 停止LightDM,运行sudo systemctl stop lightdm
  4. 尝试再次启动LightDM:sudo systemctl start lightdm
  5. 如果你有另外一个显示管理器,你可以去启动它,比如运行:sudo systemctl start gdm
  6. 你可以设置默认的显示管理器,运行sudo dpkg-reconfigure lightdm
  7. 检查系统的最新更新日期,特别是视频驱动。
  8. 文件记录这个BUG。如果您不确定原因在哪里(lightdm/unity-greeter/unity/X/kernel),那么针对lightdm的文件和错误将被筛选和重新分配(译者注:意思是多试几次,缩小问题范围)。

附录

什么是显示管理器

简单来说, 显示管理器(display manager)(DM)是一个为你的 Linux 发行版提供图形登录功能的程序。它控制用户会话并管理用户认证。显示管理器会在你输入用户名和密码后,立即启动显示服务器并加载桌面环境

显示管理器通常是登录界面的代名词。毕竟它是可见的部分。然而,可见的登录屏幕,也叫 欢迎页(greeter),只是显示管理器的一部分。

各种桌面环境和显示服务器一样,也有各种显示管理器。

不同的显示管理器

有些人认为显示管理器是桌面环境的一部分,但事实并非如此。它是一个独立的程序。

桌面环境可能会推荐某个显示管理器,但这并不意味着它不能与其它一些显示管理器一起工作。如果你曾经在同一个系统中安装过不止一个桌面环境,你会记得,登录界面(即显示管理器)允许你切换桌面环境。、

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gkYaV5Rz-1661084129799)(pic/在这里插入图片描述

虽然显示管理器不是桌面环境本身的一部分,但它往往与桌面环境由同一个开发团队开发。它也成为桌面环境的代表。

例如,GNOME 桌面环境开发了 GDM(GNOME Display Manager),光看登录界面就会想到 GNOME 桌面环境。
在这里插入图片描述

一些流行的显示管理器有:

  • GDMGNOME 显示管理器(GNOME Display Manager)):GNOME 的首选。
  • SDDM简单桌面显示管理器(Simple Desktop Display Manager)):KDE 首选。
  • LightDM:由 Ubuntu 为 Unity 桌面开发。

显示管理器可以定制

有这么多的桌面环境可供选择,它们都有自己的显示管理器吗?不,不是这样的。

正如我之前提到的,可见的登录屏幕被称为欢迎页。这个欢迎页可以进行自定义来改变登录屏幕的外观。

事实上,许多发行版和/或桌面环境都制作了自己的欢迎页,以给用户提供一个类似于他们品牌的登录屏幕。

例如,Mint 的 Cinnamon 桌面使用了 LightDM,但有自己的欢迎页来给它更多的 Mint 式(或者我应该说是 Cinnamon)的外观。
在这里插入图片描述
如果你喜欢编码和调整,你可以根据自己的喜好修改或编码自己的欢迎页。

改变显示管理器

如果你愿意,可以更改显示管理器。你需要先安装显示管理器。安装时你会看到切换显示管理器的选项。

sudo dpkg-reconfigure lightdm 

在这里插入图片描述
如果当时没有做切换,那么以后可以通过手动配置来改变显示管理器。不同的发行版重新配置显示管理器的方法略有不同。

例如我可以更换UOS的lightdm,因为UOS默认只安装了lightdm,可以再安装一个xdm和sddm(sudo apt install xdm sddm),之后运行sudo dpkg-reconfigure lightdm
在这里插入图片描述
修改成xdm,重启
在这里插入图片描述

修改成sddm,重启
在这里插入图片描述

修改有风险,容易进不去系统

参考

https://wiki.ubuntu.com/LightDM

https://github.com/canonical/lightdm

https://wiki.archlinux.org/title/LightDM

posted @ 2022-08-28 23:34  main_c  阅读(2001)  评论(0编辑  收藏  举报