1. 程式人生 > 其它 >【優麒麟】不再單調!快來自定義你的專屬登入介面~

【優麒麟】不再單調!快來自定義你的專屬登入介面~

關注優麒麟,更多幹貨等著你!

目前優麒麟作業系統的登入介面風格比較統一,我們個人使用者可不可以開發一款獨具一格的,具有特殊意義的登入程式呢?例如開機登入時幻燈片播放自己喜歡的照片、展示自己喜歡的人生格言等,這當然是可以的!

接下來就為大家簡要介紹下開發人員如何在優麒麟上定製自己的登入介面。

一、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/~robert-ancell/lightdm/reference/

  • 他山之石:

https://blog.csdn.net/caoshiying/article/details/107242980

  • Qt 官方文件:

https://doc.qt.io/qt.html#qt5

感興趣的小夥伴,趕緊學起來吧!如有更多疑問,可至優麒麟論壇留言告訴我們哦~