關注優麒麟,更多幹貨等着你!
目前優麒麟操作系統的登錄界面風格比較統一,我們個人用户可不可以開發一款獨具一格的,具有特殊意義的登錄程序呢?例如開機登錄時幻燈片播放自己喜歡的照片、展示自己喜歡的人生格言等,這當然是可以的!
接下來就憑藉我個人的一點淺薄知識,來給大家做個拋磚引玉,簡要介紹下開發人員如何在優麒麟上定製自己的登錄界面。
https://www.youku.com/video/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=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 文檔:
http://people.ubuntu.com/~rob...
- 他山之石:
https://blog.csdn.net/caoshiy...
- Qt 官方文檔:
https://doc.qt.io/qt.html#qt5
感興趣的小夥伴,趕緊學起來吧!如有更多疑問,可至優麒麟論壇留言告訴我們哦~