现在优麒麟操作体系的登录界面风格比较统一,咱们个人用户可不可以开发一款独具一格的,具有特殊意义的登录程序呢?例如开机登录时幻灯片播放自己喜欢的相片、展示自己喜欢的人生格言等,这当然是可以的!

接下来就为大家扼要介绍下开发人员如安在优麒麟上定制自己的登录界面。

一、DIY 优麒麟登录界面开发根底与开发环境介绍

1.开发根底(需要但不限于)

了解 C/C++ 计算机编程言语、了解 Qt 跨渠道的 C++ 图形用户界面应用程序结构以及 QtCreator 开发东西包。

2.开发环境

20.04 版别体系上登录界面的发动、展示以及登录认证是在 LightDM 根底上搭配 liblightdm-qt5-3-dev 库(QT 应用程序与 LightDM 交互的桥梁)完成的,今日咱们就在此开发环境根底上自界说登录界面。

二、了解 LightDM–桌面显示管理器

1.什么是 LightDM ?

LightDM 是运行在 Debian 系列操作体系上的桌面显示管理器,它的全名是 LightDisplay Manager ,外表含义是轻量级桌面显示管理器。它是 FreeDesktop 工程的一部分。FreeDesktop 是一个致力于 Linux 和其他类 Unix 上的 X 窗口体系的桌面环境之间的互操作性和根底技能共享的项目,由 Red Hat 公司 的 HavocPennington 于 2000 年 3 月创建。官方网站是:www.freedesktop.org。优麒麟社区 20.04 版别就是运用 LightDM 作为默许的窗口管理器。

2.LightDM 与登录界面程序的联系及装备修正

操作体系初始化时会拉起 LightDM 服务,LightDM 服务初始化时会发动 Xserver 图形桌面服务,再依据 LightDM 的一系列装备拉起一些自界说脚本、服务、或程序,登录界面程序就在其中,涉及到如下几个装备文件夹,装备具体界说见参考文档:

  • /usr/share/lightdm/lightdm.conf.d/

  • /etc/lightdm/

  • /etc/lightdm/lightdm.conf.d/

  • 全局通用装备修正文件:/etc/lightdm/lightdm.conf

  • 自界说装备修正文件:/usr/share/lightdm/lightdm.conf.d/96-mydiygreeter.conf

3.装备自界说登录程序

编辑文件(不存在则需创建)/usr/share/lightdm/lightdm.conf.d/96-mydiygreeter.conf如下:

[Seat:*]
#greeter-session=ukui-greeter
greeter-session=mydiygreeter
user-session=ukui

三、登录界面程序完成

1.在 QtCreator 东西中创建工程 mydiygreeter 工程并运用 QT 应用程序结构初始化登录主窗口

不再单调!快来自定义你的专属登录背景~

2.完成与 LightDM 交互类得到交互接口

不再单调!快来自定义你的专属登录背景~

  • 获取当前选中行将登录的用户名:userName

  • 设置行将登录的用户名:setUserName

  • 告诉 LightDM 异步发动 user-session(用户会话):startSession

不再单调!快来自定义你的专属登录背景~

  • 获取用户与 LightDM 共享目录:getEnsureShareDir

3.获取体系用户列表并初始化用户列表菜单控件

  • 实例化 QLightDM::UsersModel 用户数据模型获取体系用户列表

  • 依据用户列表信息初始化菜单控件供挑选登录用户

4.用户登录交互完成

  • 实例化 MyGreeterWrapper:m_greeter,并监听认证交互状况信号(认证过程中音讯提示、认证状况机状况变更、认证成果)

不再单调!快来自定义你的专属登录背景~

  • 经过 MyGreeterWrappe r实例调用 LightDM 开始认证接口:
m_greeter->authenticate(username);
  • 经过 MyGreeterWrapper 实例调用LightDM密码认证:
m_greeter->respond(pwd);
  • 认证完成后发动用户会话:
m_greeter->startSession();

5.自界说主窗口布景图

  • 遍历自界说布景相片途径中图片途径

不再单调!快来自定义你的专属登录背景~

  • 定时器变更行将更新的布景图途径

不再单调!快来自定义你的专属登录背景~

  • 主窗口布景刷新图片–重写 QMainWindow 类的 paintEvent 办法

不再单调!快来自定义你的专属登录背景~

6.编译 mydiygreeter 工程得到二进制程序 mydiygreeter

7.将自界说登录程序拷贝到体系默许可执行程序目录:

cpmydiygreeter /usr/sbin/ (需sudo提权)

8.装备 mydiygreeter.desktop 文件,并拷贝到 /usr/share/xgreeters/ 目录下

不再单调!快来自定义你的专属登录背景~

9.终端重启 LightDM 服务即可见自界说登录界面

留意

1、上述流程中代码逻辑仅供参考,具体demo源码及打deb包可登录优麒麟论坛(或点击“阅读原文”)收取;

2、运用 QLightDM 需在 Qt 工程中添加装备:

PKGCONFIG+= liblightdm-qt5-3)

参考文档

  • LightDM 文档:

people.ubuntu.com/~robert-anc…

  • 他山之石:

blog.csdn.net/caoshiying/…

  • Qt 官方文档:

doc.qt.io/qt.html#qt5