• 首页
  • 加入
  • RSS
  • DDE v23 RC 移植简要指南

    Sunday, May 14, 2023
    DDE 移植兴趣小组 #dde-port:deepin.org


    编辑的话请把自己的名字加到作者名单里

    DDE v23 RC 即将随 deepin v23 RC 发布(你阅读到这个文章的时候可能已经发布了)。为了方便各个其它发行版的包维护者可以更方便的移植 DDE 到对应的发行版,这里提供一篇简要的移植指南,用以描述常见的移植问题和解决方案。

    下面对项目名称的称呼均以 GitHub 对应的原始仓库名为准。 {.note}

    概览

    相比 beta2 -> beta3 而言,原本处于技术预览状态的 dde-shell 项目现已开始逐步取代部分旧的 DDE 组件。DDE 此次 beta3 -> RC 的更新中,dde-shell 取代了 dde-dock 项目,dde-launchpad 也开始转为使用 dde-shell 的对应插件版本。同时,由于对 Qt6 与 DTK6 使用的增加,我们也对 DTK 进行了大量的问题修复,这些修复也被对应的组件(dde-launchpad 与 dde-shell)依赖。

    由于这些项目的版本间互相影响,我们建议移植人员参照 deepin v23 RC 所使用的包版本进行打包,下面会对主要的部分进行详细说明。

    需要注意的是,由于此文章编写时间早于版本发布时间,故最终版本镜像中使用的版本可能高于下面列出的版本。我们尽可能确保此文章的准确性,但若您需要获取 ISO 镜像中使用的确切软件版本列表,请挂载 ISO 后参阅 LIVE/FILESYS0.MAN 路径对应的文件的内容。

    主要组件

    DTK 与 DTK6

    DTK 是 DDE 组件与应用的基础依赖,适用于 RC 的版本参照如下:

    packageversion
    dtkcommon5.6.29
    dtkcore5.6.29
    dtkgui5.6.29
    dtkwidget5.6.29
    dtkdeclarative5.6.29
    qt5integration5.6.29
    qt5platform-plugins5.6.29
    dtk6core6.0.16
    dtk6gui6.0.16
    dtk6widget6.0.16
    dtk6declarative6.0.16
    qt6integration6.0.16
    qt6platform-plugins6.0.16

    本次 DTK 版本号以及相对应的平台插件等版本号均已对齐,可直接参照打包。

    关于 qt5platform-plugins,现有的 dwayland 插件可能对非 DDE 环境(例如 KDE)的 wayland 用户存在影响,可参照 linuxdeepin/developer-center#7217 打对应的 patch 规避影响。

    dtk6 曾对 Qt 6.2, Qt 6.4 和 Qt 6.6 均进行过适配,我们目前的研发与测试主要使用 Qt 6.6 版本。对于 Qt 6.7 我们暂未进行主动支持,对于 Qt 6.7 的相关处理请先参照 Arch Linux 目前使用的 qt-6.7.patch

    目前,使用 dtk6 的正式组件有 dde-application-manager,dde-launchpad 与 dde-shell,技术预览组件有 treeland。

    DDE 主要组件

    下面仅涉及变化较大或影响较广的组件。其余未涉及的组件可正常参照最新 tag 进行打包与移植。

    下面涉及到的组件的版本参照如下:

    packageversion
    dde-session1.2.9
    dde-application-manager1.2.12
    dde-shell0.0.23
    dde-launchpad0.6.12
    dde-application-wizard0.1.5
    dde-dock被 dde-shell 取代,不再使用

    dde-application-manager

    本次此组件并不存在如 beta2 -> beta3 阶段时的巨大变化,但由于此组件仍为诸多组件的核心依赖,并且此组件也因其它组件需要而增加了一些新的接口,故建议总是使用最新版本。

    dde-shell

    dde-shell 旨在将 DDE 桌面环境插件化与模块化,降低开发难度,使各个组件的替换变得更加容易,并且提供更好的桌面环境集成支持。RC 阶段,dde-shell 已经可以满足原计划的部分目标。现 DDE 环境下,dde-shell 已取代 dde-dock 来负责管理整个 dock 区域,并且 dde-launchpad 也提供了(且默认使用)对应的 dde-shell 插件,用以展示启动器相关的界面。

    尽管 dde-shell 也包含了一份通知中心插件,但这个插件并不会在 RC 中被启用。

    出于初期快速开发目的,dde-shell 本身内附了诸多其它项目的托盘插件代码以及一些第三方库,这部分的代码会在后续版本迭代中逐渐被调整或移除。对于这些代码,可在移植过程中先行酌情调整或移除。项目内附的 networkmanager-qt 依赖也会在后续移除,转而使用系统版本。由于 RC 版本不会涵盖此变更,若有需要,请参见 linuxdeepin/dde-shell#286

    dde-launchpad

    RC 版本中,dde-launchpad 不再支持 Qt 5 构建,也不再直接支持以独立进程的形式被最终用户使用(事实上仍然支持,但仅供开发调试场景下使用)而仅支持以 dde-shell 插件的形式被最终用户使用。因而,打包 dde-launchpad 现需要先打包 dde-shell,并确保用户最终使用的是 dde-shell。

    dde-session

    在之前的版本中,dde-session 提供的相关 systemd 服务依赖关系会导致进入 KDE 环境时也会拉起 DDE 相关的服务,最终由于拉起失败导致 KDE 环境也无法进入。在 RC 版本的 dde-session 中,此问题应当已被解决。

    另外重申,我们已在 beta3 阶段放弃了对 deepin-kwin wayland 的支持,DDE 后续所有 wayland 相关的支持均由 treeland 提供。

    技术预览组件

    技术预览阶段的组件均可酌情决定是否打包。需要注意的是,这些组件并不一定在 RC 阶段存在改善。

    treeland / ddm

    treeland 目前是技术预览阶段的项目,兼顾 Wayland 窗口合成器和显示管理功能。treeland 除需要 dtk6declarative 外,还依赖新项目包括 waylibqwlroots。需要使用 Qt 版本 >= 6.6.0, wlroots 版本 >= 0.17.0 编译 qwlroots/waylib。

    ddm 的仓库也在 RC 阶段进行了拆分,现在 ddm 与 treeland 已是分别独立的两个仓库进行维护了。

    deepin-im

    treeland 目前是技术预览阶段的项目,提供了输入法的抽象层。目前,deepin-im 仅期望在 treeland 环境下使用。它会设置 QT_IM_MODULE 等环境变量的值来影响实际使用的输入法模块。

    RC 版本中,并未涉及对 deepin-im 组件的改善。

    获取移植帮助

    如果您希望得到移植相关的帮助,请考虑加入我们 DDE 移植小组的在线交流群(下列房间有桥接,任选其一即可),一起展开相关的交流: