deepin 25 beta DDE 移植简要指南
编辑的话请把自己的名字加到作者名单里
已经发布的 deepin 25 beta 包含了对应的新版 DDE。为了方便各个其它发行版的包维护者可以更方便的移植 DDE 到对应的发行版,这里提供一篇简要的移植指南,用以描述常见的移植问题和解决方案。
下面对项目名称的称呼均以 GitHub 对应的原始仓库名为准。
概览
相对于 deepin 25 alpha,在 deepin 25 beta 中并不存在较大幅的架构调整,而是以缺陷修复以及完善之前尚未完善但计划涵盖在最终版本的组件(例如 QML 版控制中心)作为研发的重心。需要注意的是,部分 DDE 组件在本版本中已被废弃,另外本次发布过程中也存在一个组件的 git 仓库有变动的情况,详情请参见后续的描述。
由于这些项目的版本间互相影响,我们建议移植人员参照 deepin 25 beta 所使用的包版本进行打包,下面会对主要的部分进行详细说明。
需要注意的是,由于此文章编写时间早于版本发布时间,故最终版本镜像中使用的版本可能高于下面列出的版本。我们尽可能确保此文章的准确性,但若您需要获取 ISO 镜像中使用的确切软件版本列表,请挂载 ISO 后参阅 LIVE/FILESYS{T,0,1}.MAN
/live/filesystem.manifest
路径对应的文件的内容。
主要组件
DTK 与 DTK6
DTK 是 DDE 组件与应用的基础依赖,适用于 RC 的版本参照如下:
package | version |
---|---|
dtkcommon | 5.7.16 |
dtklog | 0.0.2 |
dtkcore | 5.7.16 |
dtkgui | 5.7.16 |
dtkwidget | 5.7.16 |
dtkdeclarative | 5.7.16 |
qt5integration | 5.7.16 |
qt5platform-plugins | 5.7.16 |
dtk6core | 6.0.36 |
dtk6gui | 6.0.36 |
dtk6widget | 6.0.35 |
dtk6declarative | 6.0.36.4 |
qt6integration | 6.0.35 |
qt6platform-plugins | 6.0.35 |
本次 DTK 组件大部分版本号以及相对应的平台插件等版本号均已对齐,例外的有 dtklog、dtk6widget、dtk6declarative、qt6integration、qt6platform-plugins。可参照上表进行打包。
关于 qt5platform-plugins,现有的 dwayland 插件可能对非 DDE 环境(例如 KDE)的 wayland 用户存在影响,可参照 linuxdeepin/developer-center#7217 打对应的 patch 规避影响。
DDE 主要组件
下面仅涉及变化较大或影响较广的组件。其余未涉及的组件可正常参照最新 tag 进行打包与移植。
由于 deepin 25 preview 仍在持续开发过程中,故较多组件采取了 x.99.z 的版本号策略。此外,一般情况下,此类 tag 并不会实际以 git tag 的形式存在,而只会体现在 debian/changlog
文件中。下面涉及到的此类版本号将会在版本发布前后补充对应的 git tag。
下面涉及到的组件的版本参照如下:
package | version |
---|---|
deepin-desktop-schemas | 6.0.10 |
dde-daemon | 6.1.32 |
dde-session | 1.99.17 |
dde-application-manager | 1.2.28 |
dde-shell | 1.99.36 |
dde-launchpad | 1.99.15 |
dde-tray-loader | 1.99.26 |
dde-application-wizard | 0.1.14 |
dde-clipboard | 6.1.8 |
dde-launcher | 被 dde-launchpad 取代,不再使用 |
dde-dock | 被 dde-shell 取代,不再使用 |
startdde | 已被废弃,不再使用 |
dde-application-manager
由于涉及到诸多关于应用识别的改善,故建议总是使用最新版本。
dde-session-shell
此项目未涉及到结构性的巨大调整,但存在仓库历史与 tag 历史变化的事项。由于项目维护需要,之前的 dde-session-shell 仓库被重命名为了 dde-session-shell-snipe,并在此后新建了名为 dde-session-shell 的仓库,这导致你无法在 dde-session-shell 仓库下找到历史(例如alpha之前)的 tag 信息。若有移植需求,可移步 dde-session-shell-snipe 仓库。
对于 beta 以及未来版本的移植,仍然保持使用 dde-session-shell 仓库即可。
dde-shell
dde-shell 旨在将 DDE 桌面环境插件化与模块化,降低开发难度,使各个组件的替换变得更加容易,并且提供更好的桌面环境集成支持。alpha 阶段相比 preview 阶段集中在缺陷的修复上,并未涵盖太多的结构调整和新特性。对于 alpha 以及更早版本的变化,请阅读之前的博客文章。
为保障 dde-shell 在 Qt 6.8.0 或 6.8.1 的环境可以正常运行(即使是X11环境下),若 ,则 必须 给 qtwayland 打下面的 patch:
- https://codereview.qt-project.org/c/qt/qtwayland/+/603556 (此 patch 已合入 Qt 上游,涵盖在
Qt Wayland >= 6.8.2
版本中)
dde-shell 在 alpha 中为修正一个特定问题所包含的一个变更依赖另一个 Qt Wayland 的 patch:
若你所移植的目标发行版不接受此补丁,则可考虑对 dde-shell 项目 revert 于此相关的对应 commit:
dde-launchpad
dde-launchpad 现仅支持以 dde-shell 插件的形式被最终用户使用。因而,打包 dde-launchpad 现需要先打包 dde-shell,并确保用户最终使用的是 dde-shell。
dde-session
我们已在 deepin 23 beta3 起放弃了对 deepin-kwin wayland 的支持,DDE 后续所有 wayland 相关的支持均由 treeland 提供。请参见后续的 Treeland 段落。
下面涉及到的组件的版本参照如下。对于位于非 linuxdeepin 组织的软件包,此处一并给出了组织名:
package | version |
---|---|
vioken/waylib | 0.6.13 |
vioken/qwlroots | 0.5.3 |
treeland | 0.5.20 |
ddm | 0.1.10 |
deepin-kwin 环境
deepin-kwin 对 Qt 的版本依赖切换到了 Qt 6,不过值得注意的是,当前的 deepin-kwin 并非从上游 kwin 6.x 中 fork 出来的,而是基于 uos 20 版本的 kwin 5.27.x 进行的 qt6/kf6 迁移,并且由于一些原因,其二进制可执行的文件名恢复到了 kwin,这会导致与上游原版 kwin 的冲突。
就于此事项的详细介绍,请参见 https://github.com/orgs/linuxdeepin/discussions/11471 讨论。对于移植人员,我们建议考虑下面两种方案:
- 继续使用 deepin-kwin 5.27,尽管存在一些问题,但此版本仍然可保证和上游版本 kwin 共存。
- 考虑打包 Treeland 环境。
Treeland 环境
Treeland 环境在 alpha -> beta 阶段无较大变化,alpha 阶段的移植注意事项仍然适用于 beta。
DDM
尽管 DDM 目前是基本功能可用状态,DDM 目前仍相对而言不够稳定。对于打包移植而言,建议采用其他DM来启动用户级的treeland。
对于其它 DM,只需要打包时安装 usr/share/wayland-sessions/treeland-user.desktop
即可。
Qt 补丁
下述假定您的发行版使用的 Qt 版本为 Qt 6.8.2。
如果你在 Treeland 下遇到小 launchpad 无法输入中文的问题,可以打下面的 patch,但是该 patch 目前尚未进行完整测试,可能存在一些问题。
https://codereview.qt-project.org/c/qt/qtbase/+/611940
另外,如果你的发行版所附的 Qt 6.8 版本并未更新至 Qt 6.8.2,则可能需要打三个额外的补丁,可参见 DDE Qt 6.8 适配说明(针对 Qt 6.8.0) 以及 deepin 25 preview DDE 移植简要指南(针对 Qt 6.8.1)。
Qt 6.9 说明
DDE 尚未完整针对 Qt 6.9 进行测试,但存在一些已知问题,下面列出了对应的问题和处理方式:
- QML 的 DelegateChoice/DelegateChooser 组件不存在问题
Qt 6.9 中,此组件被从 labs “转正”到了 QtQml.Models 下,相应的 import 需要修正。已知 dde-control-center 与 dde-shell 存在此问题,其中 dde-control-center 已进行了修正:
获取移植帮助
如果您希望得到移植相关的帮助,请考虑加入我们 DDE 移植小组的在线交流群(下列房间有桥接,任选其一即可),一起展开相关的交流:
- Matrix 群:
#dde-port:deepin.org
- Telegram 群:https://t.me/ddeport