• 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
    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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    UOS

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

    在这里插入图片描述

    # 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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    kylin2101

    /usr/share/lightdm/lightdm.conf.d
    /usr/local/share/lightdm/lightdm.conf.d
    /etc/xdg/lightdm/lightdm.conf.d
    /etc/lightdm/lightdm.conf
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述

    # 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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    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
    
    • 1
    • 2

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

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

    配置应用

    禁止访客登录

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

    [SeatDefaults]
    allow-guest=false
    
    • 1
    • 2

    隐藏用户列表

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

    [SeatDefaults]
    greeter-hide-users=true
    
    • 1
    • 2

    允许手动登录

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

    [SeatDefaults]
    greeter-show-manual-login=true
    
    • 1
    • 2

    设置自动登录

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

    [SeatDefaults]
    autologin-user=username
    autologin-user-timeout=delay
    
    • 1
    • 2
    • 3

    设置自动登录访客账号。

    autologin-guest=true
    
    • 1

    修改默认会话

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

    [SeatDefaults]
    user-session=name
    
    • 1
    • 2

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

    修改欢迎界面

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

    [SeatDefaults]
    greeter-session=name
    
    • 1
    • 2

    其中 name 代表 /usr/share/xgreeters/*.desktop 中的 .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)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    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'
    
    • 1
    • 2
    • 3

    然后运行 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
    
    • 1

    该方法在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 
    
    • 1

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

    例如我可以更换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

  • 相关阅读:
    学习了解Angular 2 架构
    【单目3D目标检测】MonoGround论文精读与代码解析
    使用代理IP常见问题及解答
    003 OpenCV filter2D
    Linux 文件搜索命令Find详解
    算法竞赛入门【码蹄集新手村600题】(MT1280-1300)C语言
    NC65 如何设置现金流量明细查询的查询框中核算账簿可多选??
    mybatis驼峰映射
    Ctfshow web入门 XSS篇 web316-web333 详细题解 全
    Intel汇编-变量初始赋值
  • 原文地址:https://blog.csdn.net/cclethe/article/details/126454842