关注优麒麟,更多干货等你哦!目前,优麒麟操作系统的登录界面风格比较统一。我们个人用户是否可以开发一个独特的具有特殊意义的登录程序?比如启动登录后,可以幻灯片放映自己喜欢的照片,展示自己喜欢的人生格言等等,当然可以!下面我将凭借个人浅薄的知识给大家做一个介绍,简单介绍一下开发者如何在优麒麟上自定义自己的登录界面。https://www.youku.com/video/X...壁纸素材来源于网络,仅用于视频演示。如有侵权,请联系删除。一、优麒麟登录界面DIY开发基础及开发环境介绍1、开发基础(要求但不限于)熟悉C/C++计算机编程语言,了解Qt跨平台C++GUI应用框架和QtCreator开发包.2、开发环境20.04版本系统上登录界面的启动、显示、登录认证是在LightDM的基础上借助liblightdm-qt5-3-dev库(QT应用与LightDM的桥梁)实现的。今天我们在这里开发根据环境自定义登录界面。二、认识LightDM——桌面显示管理器1、什么是LightDM?LightDM是一个运行在Debian系列操作系统上的桌面显示管理器。它的全称是LightDisplayManager,从表面上看是一个轻量级的桌面显示管理器。它是FreeDesktop项目的一部分。FreeDesktop是一个致力于Linux与Unix上其他XWindowSystem桌面环境的互操作性和基础技术共享的项目,由RedHat的HavocPennington于2000年3月创立。官方网站是:https://www.freedesktop.org。优麒麟社区20.04使用LightDM作为默认窗口管理器。2、LightDM与登录界面程序的关系及配置修改操作系统初始化时会启动LightDM服务,LightDM服务初始化时会启动Xserver图形桌面服务,然后是一些自定义的脚本、服务,or程序,登录界面程序就是其中之一,涉及以下配置文件夹。详细配置定义见参考文档:/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.conf3.配置自定义登录程序编辑文件(不存在则创建)/usr/share/lightdm/lightdm.conf.d/96-mydiygreeter.conf如下:[Seat:*]#greeter-session=ukui-greetergreeter-session=mydiygreeteruser-session=ukui三、登录界面程序实现1、在QtCreator工具中创建工程mydiygreeter工程,使用QT应用框架初始化登录主窗口2、实现与LightDM的交互,获取交互界面获取当前选择的待登录用户名in:userName设置登录的用户名:setUserName通知LightDM异步启动user-session(用户会话):startSession获取用户和LightDM共享目录:getEnsureShareDir3.获取系统用户列表并初始化用户列表菜单控件实例化QLightDM::UsersModel用户数据模型根据用户列表获取系统用户列表选择登录用户信息初始化菜单控件4.用户登录交互实现实例化MyGreeterWrapper:m\_greeter,并监听认证交互状态信号(认证时消息提示,认证状态机状态变化,认证结果)通过MyGreeterWrapper实例调用LightDM启动认证接口:m_greeter->authenticate(username);通过MyGreeterWrapper实例调用LightDM密码认证:m_greeter->respond(pwd);认证完成后启动用户会话:m_greeter->startSession();5.自定义主窗口背景图遍历自定义背景图片路径,图片路径定时器即将变化project获取二进制程序mydiygreeter7.将自定义登录程序复制到系统默认的可执行程序目录:cpmydiygreeter/usr/sbin/(需要sudo权限)8.配置mydiygreeter.desktop文件,复制到/usr/share/xgreeters/目录9.在终端重启LightDM服务就可以看到自定义登录界面了。注1.上述流程中的代码逻辑仅供参考。demo源码和deb包可登录优麒麟论坛获取;2.使用QLightDM需要在Qt工程中添加配置:PKGCONFIG+=liblightdm-qt5-3)参考文档LightDM文档:http://people.ubuntu.com/~rob...他山之石:https://blog.csdn.net/caoshiy...Qt官方文档:https://doc.qt.io/qt.html#qt5有兴趣的朋友,赶快学习吧!如果还有更多问题,欢迎在优麒麟论坛留言告诉我们哦~
