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已经从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
./autogen.sh
./configure
make
make install
实测UOS上编译完安装黑屏进不去图形界面
alt-ctrl-F1
。/var/log/lightdm
。sudo systemctl stop lightdm
。sudo systemctl start 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
/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 3月 9 2021 keys.conf
-rw-r--r-- 1 root root 6.9K 11月 9 18:36 lightdm.conf
-rw-r--r-- 1 root root 3.0K 3月 9 2021 lightdm-gtk-greeter.conf
-rw-r--r-- 1 root root 466 3月 9 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
/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
系统使用的配置参数保存在 /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
中
。
欢迎界面由 /usr/share/lightdm/lightdm.conf.d/ 中欢迎界面包提供。你可以重载该设置
[SeatDefaults]
greeter-session=name
其中 name 代表 /usr/share/xgreeters/*.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
存档一个BUG可以从终端运行下面的命令行:
ubuntu-bug lightdm
所有合适、合法的信息、日志都会添加到错误报告中。
在graphics stack
(图形堆栈)中很多事情都可能出错。如果你看不到任何图形或者损坏的图片,下列尝试也许可以帮助你:
ctrl+alt+f1
得到文本终端/var/log/lightdm
sudo systemctl stop lightdm
sudo systemctl start lightdm
sudo systemctl start gdm
sudo dpkg-reconfigure lightdm
lightdm
/unity-greeter
/unity
/X
/kernel
),那么针对lightdm的文件和错误将被筛选和重新分配(译者注:意思是多试几次,缩小问题范围)。简单来说, 显示管理器(display manager)(DM)是一个为你的 Linux 发行版提供图形登录功能的程序。它控制用户会话并管理用户认证。显示管理器会在你输入用户名和密码后,立即启动显示服务器并加载桌面环境。
显示管理器通常是登录界面的代名词。毕竟它是可见的部分。然而,可见的登录屏幕,也叫 欢迎页(greeter),只是显示管理器的一部分。
像各种桌面环境和显示服务器一样,也有各种显示管理器。
有些人认为显示管理器是桌面环境的一部分,但事实并非如此。它是一个独立的程序。
桌面环境可能会推荐某个显示管理器,但这并不意味着它不能与其它一些显示管理器一起工作。如果你曾经在同一个系统中安装过不止一个桌面环境,你会记得,登录界面(即显示管理器)允许你切换桌面环境。、
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gkYaV5Rz-1661084129799)(pic/
虽然显示管理器不是桌面环境本身的一部分,但它往往与桌面环境由同一个开发团队开发。它也成为桌面环境的代表。
例如,GNOME 桌面环境开发了 GDM(GNOME Display Manager),光看登录界面就会想到 GNOME 桌面环境。
一些流行的显示管理器有:
有这么多的桌面环境可供选择,它们都有自己的显示管理器吗?不,不是这样的。
正如我之前提到的,可见的登录屏幕被称为欢迎页。这个欢迎页可以进行自定义来改变登录屏幕的外观。
事实上,许多发行版和/或桌面环境都制作了自己的欢迎页,以给用户提供一个类似于他们品牌的登录屏幕。
例如,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