UOS/DEEPIN修改原生DDE-LOCK
本文部分内容来源于deepin官方github,地址:https://github.com/linuxdeepin
10/14/2021 4:35:01 PM
资源列表:
- DTK API 文档:
DTK
的API
接口中文说明,自动同步更新 - Deepin 社区文档:核心为
DTK
团队的文档积累,社区爱好者的作品展示、技术交流 - QtExamples:个人积累,为
DTK
的源码架构一些理解和实战 - Deepin Wiki:
Deepin
在GitHub
上某些仓库都有写Wiki
。虽零碎,但有惊喜 - DTK 相关 PPT :《DTK 框架分享.pptx》 《DTK 框架介绍、优势对比.pptx》
1 DTK介绍
DTK(deepin tool kit)全称是 深度工具套件;是基于 Qt5 开发一整套界面美观且实用的 UI 图形库。
DTK包括以下内容:
- dtk 仓库的集合(集合 = dtkwidget + dtkgui + dtkcore + qt5integration)
- 偶也指 dtkwidget 这个仓库项目(仓库的名就叫 dtkwidget)
- deepin tool kit 是一个深度工具构建集合。
- 是 deepin/uos 系统开发应用软件,使用非 Qt 原生的样式控件的集合的开发环境
- dtk 也是构建 deepin/uos 全家桶的基石
###1.1 DTK历史:
- 2015 年 ,开发 v15 ,因开发控制中心(基于 Qt Widgets),开发的过程中抽象出了 dui 控件库(约三个月),仅有部分通用性的控件,仓库名称为 dui 。
- 2016 年初,随后开发其他项目,dui 中加的东西越来越多,也不仅限于 ui 方面的控件,之后就改名为了 deepin-tool-kit 项目。
- 2017 年底,随后成为了 DDE 桌面环境的底层开发库,封装了桌面组件和上层应用的通用型窗口、控件、工具类,随着项目过大,编译过慢,拆分为 dtkcore、dtkwidget、dtkwm,旧的 deepin-tool-kit 仓库地址处于废弃状态。
- 2019 年,新增 dtkgui 模块,废弃了 dtkwm(不可跨平台,强依赖 X11,因此废弃),此后分为 dtkcore、 dtkgui、dtkwidget,角色分别对应 Qt core、gui、widgets 模块。
- 2020 年,按照如今的理解为,dtk = dtkwidget + dtkgui + dtkcore + qt5integration
###1.2 DTK架构:
DTK 目前分为三个模块,dtkcore、dtkgui,dtkwidget,主要功能如下:
2 DDE介绍
DDE(deepin desktop environment) 简称 深度桌面环境;是采用 qt 作为前端,go 为后端,gala 作为 wm,lightdm 作为 dm 的独立开发的桌面环境。
2.1 架构总览
官方提供的DDE UI包括dde ui component + ddepin-policykit-agent + deepin-gtk-theme
其中dde ui component 主要是指dde-session-shell这个项目,该项目为QT项目,github开源。
2.2 dde-session-shell
dde-session-shell 项目为dde-ui-component组件,该开源项目提供deepin/uos的锁屏界面、登录界面、关机界面、桌面低栏、控制中心等界面程序,界面为QT语言开发,详细编译出的程序如下:
- dde-dock
- dde-launcher
- dde-control-center
- dde-osd
- dde-lock
最新代码只输出:
- dde-lock
- lightdm-deepin-greeter
主要界面被合并到dde-lock程序中,通过dbus或者消息通知界面完成显示切换。
2.3 deepin-policykit-agent
该项目为deepin系统授权弹窗程序,该程序功能为读取配置文件,显示授权输入窗体,完成程序授权操作。
2.4 deepin-gtk-theme
该项目为deepin提供系统主题。
3 dde-session-shell 实践
3.1准备
源码地址:
- https://github.com/linuxdeepin/dtkcore
- https://github.com/linuxdeepin/dde-session-shell
首先下载源码,尽量保证所下源码版本和系统已装deb版本一致,避免不兼容问题。
源码下载方法可以使用github地址下载,手动选择匹配tab;或者使用apt source dtkcore 来自动下载与系统匹配的源码。
编译顺序为 dtkcore -> dde-session-shell,因为dtkcore为dde桌面组件提供基础库。
其次安装依赖库:
- 使能/etc/apt/source.list第二行的注释,该源地址提供更多库
sudo apt-get udpate
sudo apt install qt5-default qtcreator cmake g++ git
sudo apt install libdtkwidget-dev libdtkgui-dev libdtkcore-dev
3.2 编译dtkcore
源码编译:
cd dtkcore
sudo apt build-dep dtkcore
; 生成相应依赖库mkdir build;cd build
qmake ..
make
sudo make install
命令行安装:
官方说也可以直接apt安装dtkcore,但是我安装后没有起作用;
sudo apt install deepin-sdk qtcreator-template-dtk
3.3 编译dde-session-shell
在dtkcore安装的基础上,源码编译dde-session-shell;
cd dde-session-shell
mkdir build
cmake ..
make
注意:在cmake 步骤,会不断的提示有依赖包未发现,根据提示,使用sudo apt-get install libXXX-dev
命令,即可解决依赖问题。
在make完毕,build目录会生成lightdm-deepin-greeter 、dde-lock、tests
依赖包未发现,根据提示,使用sudo apt-get install libXXX-dev
命令,即可解决依赖问题。
在make完毕,build目录会生成lightdm-deepin-greeter 、dde-lock、tests
替换/usr/bin/dde-lock程序,即完成锁屏界面替换。