迅维网

查看: 1067|回复: 4
打印 上一主题 下一主题
[安装经验]

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

  [复制链接]
跳转到指定楼层
1#
发表于 2022-4-12 11:27:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式 来自: 中国 来自 中国

马上注册,获取阅读精华内容及下载权限

您需要 登录 才可以下载或查看,没有帐号?注册

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

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


一、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 月创立。官方网站是:https://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=mydiygreeteruser-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 文档:
●  他山之石:
●  Qt 官方文档:

感兴趣的小伙伴,赶紧学起来吧!如有更多疑问,可至优麒麟论坛留言告诉我们哦~




2#
发表于 2022-4-17 09:40:02 | 只看该作者 来自: 四川 来自 四川
好复杂 还是用现成的程序好些

回复 支持 反对

使用道具 举报

3#
发表于 2022-4-27 22:47:32 | 只看该作者 来自: 广东佛山 来自 广东佛山

感谢分享谢谢

回复 支持 反对

使用道具 举报

4#
发表于 2022-4-30 20:52:38 | 只看该作者 来自: 山东 来自 山东
感谢分享谢谢

回复 支持 反对

使用道具 举报

5#
发表于 2022-5-22 09:46:16 | 只看该作者 来自: 河南 来自 河南
感谢楼主分享

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长提醒 上一条 /1 下一条

快速回复 返回顶部 返回列表
附近
店铺
微信扫码查看附近店铺
维修
报价
扫码查看手机版报价
信号元
件查询
点位图


芯片搜索

快速回复