• HOME
  • JOIN
  • RSS
  • Welcome to Planet deepin

    This is a feed aggregator that collects what the contributors to the deepin community are writing on their respective blogs

    Wednesday, June 25, 2025

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

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

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

    概览

    相对于 deepin 25 beta,在 deepin 25 正式版中并不存在较大幅的架构调整,而是以缺陷修复以及完善之前尚未完善但计划涵盖在最终版本的组件(例如 QML 版控制中心)作为研发的重心。本阶段中有部分组件的首位版本号存在调整,另存在一些注意事项,详情请参见后续的描述。

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

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

    主要组件

    DTK 与 DTK6

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

    packageversion
    dtkcommon5.7.17
    dtklog0.0.4
    dtkcore5.7.17
    dtkgui5.7.17
    dtkwidget5.7.17
    dtkdeclarative5.7.17
    qt5integration5.7.17
    qt5platform-plugins5.7.17.1
    dtk6core6.0.37
    dtk6gui6.0.37
    dtk6widget6.0.37
    dtk6declarative6.0.37
    qt6integration6.0.37
    qt6platform-plugins6.0.37

    本次 DTK 组件大部分版本号以及相对应的平台插件等版本号均已对齐,例外的有 dtkcommon 与 dtklog。可参照上表进行打包。

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

    DDE 主要组件

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

    在 alpha 与 beta 阶段使用 1.99.z 系列版本号的项目现均启用了 2.0.z 版本号,以表示相关的行为变动。针对 dde-shell 所提供库的依赖的 SOVERSION 仍为 1,不受打包版本号的影响。

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

    packageversion
    deepin-desktop-schemas6.0.11
    dde-daemon6.1.40
    dde-session2.0.2
    dde-session-ui6.0.30
    dde-session-shell6.0.41
    dde-application-manager1.2.31
    dde-shell2.0.1
    dde-launchpad2.0.1
    dde-tray-loader2.0.2
    dde-application-wizard0.1.15
    dde-clipboard6.1.9
    deepin-service-manager1.0.13
    dde-launcher被 dde-launchpad 取代,不再使用
    dde-dock被 dde-shell 取代,不再使用
    startdde已被废弃,不再使用

    dde-application-manager

    由于涉及到诸多关于应用识别的改善,故建议总是使用最新版本。

    dde-session-shell

    相比 beta ,此项目不涉及较大的结构调整,但你可能希望阅读 beta 时的变动描述,涉及到了仓库位置和提交历史相关的说明。

    dde-shell

    dde-shell 旨在将 DDE 桌面环境插件化与模块化,降低开发难度,使各个组件的替换变得更加容易,并且提供更好的桌面环境集成支持。正式阶段相比 beta 阶段集中在缺陷的修复上,并未涵盖太多的结构调整和新特性。对于 beta 以及更早版本的变化,请阅读之前的博客文章。

    为保障 dde-shell 在 Qt 6.8.0 或 6.8.1 的环境可以正常运行(即使是X11环境下),若 ,则 必须 给 qtwayland 打下面的 patch:

    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 组织的软件包,此处一并给出了组织名:

    packageversion
    vioken/waylib0.6.13
    vioken/qwlroots0.5.3
    treeland0.5.20
    ddm0.1.10

    deepin-kwin 环境

    此部分相对 beta 也未存在较大变动,但由于此组件的重要性,方便起见,此处重新阐述 beta 阶段的变化:

    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 讨论。对于移植人员,我们建议考虑下面三种方案:

    • 使用 Qt 6 的 deepin-kwin,放弃与上游 kwin 的共存支持。
    • 继续使用 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 进行测试,但存在一些已知问题,下面列出了对应的问题和处理方式:

    1. QML 的 DelegateChoice/DelegateChooser 组件不存在问题

    Qt 6.9 中,此组件被从 labs “转正”到了 QtQml.Models 下,相应的 import 需要修正。已知 dde-shell 存在此问题(修正相关问题的 patch)。

    若有其他项目存在相同问题,则对于此问题的修正,可参考 dde-shell 的相关提交:

    获取移植帮助

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

    Tuesday, May 27, 2025

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

    已经发布的 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 的版本参照如下:

    packageversion
    dtkcommon5.7.16
    dtklog0.0.2
    dtkcore5.7.16
    dtkgui5.7.16
    dtkwidget5.7.16
    dtkdeclarative5.7.16
    qt5integration5.7.16
    qt5platform-plugins5.7.16
    dtk6core6.0.36
    dtk6gui6.0.36
    dtk6widget6.0.35
    dtk6declarative6.0.36.4
    qt6integration6.0.35
    qt6platform-plugins6.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。

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

    packageversion
    deepin-desktop-schemas6.0.10
    dde-daemon6.1.32
    dde-session1.99.17
    dde-application-manager1.2.28
    dde-shell1.99.36
    dde-launchpad1.99.15
    dde-tray-loader1.99.26
    dde-application-wizard0.1.14
    dde-clipboard6.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:

    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 组织的软件包,此处一并给出了组织名:

    packageversion
    vioken/waylib0.6.13
    vioken/qwlroots0.5.3
    treeland0.5.20
    ddm0.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 进行测试,但存在一些已知问题,下面列出了对应的问题和处理方式:

    1. QML 的 DelegateChoice/DelegateChooser 组件不存在问题

    Qt 6.9 中,此组件被从 labs “转正”到了 QtQml.Models 下,相应的 import 需要修正。已知 dde-control-center 与 dde-shell 存在此问题,其中 dde-control-center 已进行了修正:

    获取移植帮助

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

    Wednesday, May 14, 2025

    起因

    之前已经写过一篇使用 distrobox

    Tuesday, April 22, 2025

    最近遇到了两起 X11 下客户端报 Maximum number of clients reached 的错误,并且无法连接到 Xorg。

    搜到了一个排查方法,执行

    Wednesday, April 16, 2025

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

    deepin 23.1 现已发布。为了方便各个其它发行版的包维护者可以更方便的移植 DDE 到对应的发行版,这里提供一篇简要的移植指南,用以描述常见的移植问题和解决方案。

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

    概览

    对于 DDE 本次更新并未包含大规模的结构调整,而是比较存催的缺陷修复为主的更新,对于比较值得注意的事项将会列在下方。对于 deepin 23 的注意事项,可参见 deepin 23 正式版发布时的移植指南文章所给出的说明。

    由于 DDE 涉及到的各个组件项目的版本间互相影响,我们强烈建议移植人员参照 deepin 23.1 正式版所使用的包版本进行打包(也务必遵循依赖顺序打包)。下面会对主要的部分进行详细说明。

    下面给出的版本号信息供打包移植时参考。若您需要获取 ISO 镜像中使用的确切软件版本列表,请挂载 ISO 后参阅 LIVE/FILESYSTEM.MANIFEST (也可能是 LIVE/FILESYS0.MAN)路径对应的文件的内容。

    主要组件

    DTK 与 DTK6

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

    packageversion
    dtkcommon5.7.5
    dtklog0.0.2
    dtkcore5.7.5
    dtkgui5.7.5
    dtkwidget5.7.5
    dtkdeclarative5.7.5
    qt5integration5.7.5
    qt5platform-plugins5.7.5
    dtk6log0.0.2
    dtk6core6.0.25
    dtk6gui6.0.25
    dtk6widget6.0.25
    dtk6declarative6.0.25
    qt6integration6.0.25
    qt6platform-plugins6.0.25

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

    deepin-kwin wayland 功能已经废弃,未来将由 treeland 替代。目前 dwayland 包已经不再使用,依赖此包的应用比如 qt5platform-plugins,不应该继续编译依赖 dwayland 的功能,可参照 linuxdeepin/developer-center#7217 打对应的 patch 规避。

    目前,使用 dtk6 的正式组件有 dde-application-manager,dde-launchpad 与 dde-shell。需要注意,deepin 23 环境中 dde-shell 的托盘组件 dde-tray-loader 仍然需要使用 qt5。

    DDE 主要组件

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

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

    packageversion
    deepin-osconfig2024.08.06
    dde-app-services1.0.27
    dde-session1.2.13
    dde-application-manager1.2.27
    dde-tray-loader1.0.10
    dde-shell1.0.10
    dde-launchpad1.0.11
    dde-application-wizard0.1.10
    deepin-wayland-protocols1.10.0.28
    deepin-kwin5.27.2.213
    dde-launcher被 dde-launchpad 取代,不再使用
    dde-dock被 dde-shell 取代,不再使用

    dde-application-manager

    此组件现已使用主干分支最新版本(当前为 1.2.27)。请注意,较早的主干版本(例如 1.2.26)在 deepin 23 环境存在一些已知行为问题,故移植最新的 deepin 23 DDE 时,请至少使用 1.2.27 版本。

    dde-session-shell

    尽管此组件不存在架构性质层面的较大调整,但涉及到打包移植相关的注意事项。此组件由于主干分支的研发需求,对仓库进行过迁移到。当前 GitHub 上的 linuxdeepin/dde-session-shell 仓库历史已与之前不同。故如果你需要适用于 deepin 23 的此仓库的完整历史,请转到 dde-session-shell-snipe。所有原始仓库的提交历史以及 tag 均可在这个仓库中找到(实质是仓库重命名后新建了与原名的同名仓库)。

    (注:相关请参见此邮件列表存档

    Qt 6.9 编译问题

    如果遇到 qmlsc 崩溃问题,见 QTBUG-135885QTBUG-135885,需要为 qtdeclarative 增加以下 patch:

    技术预览组件

    原本涉及的技术预览组件在 23 至 23.1 的这个阶段均无较大进展,故不再于此罗列。

    获取移植帮助

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

    Friday, March 21, 2025

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

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

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

    概览

    相对于 deepin 25 preview,在 deepin 25 alpha 中并不存在较大幅的架构调整,而是以缺陷修复以及完善之前尚未完善但计划涵盖在最终版本的组件(例如 QML 版控制中心)作为研发的重心。同时,我们也对 Qt、DTK 进行了更多完善,以供 DDE 组件以及 Treeland 能够更好的运行。

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

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

    主要组件

    DTK 与 DTK6

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

    packageversion
    dtkcommon5.7.12
    dtklog0.0.2
    dtkcore5.7.12
    dtkgui5.7.12
    dtkwidget5.7.12
    dtkdeclarative5.7.12
    qt5integration5.7.12
    qt5platform-plugins5.7.7
    dtk6core6.0.32.1
    dtk6gui6.0.32
    dtk6widget6.0.32
    dtk6declarative6.0.32.1
    qt6integration6.0.32
    qt6platform-plugins6.0.32

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

    关于 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。

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

    packageversion
    dde-session1.99.11
    dde-application-manager1.2.26
    dde-shell1.99.28
    dde-launchpad1.99.9
    dde-tray-loader1.99.19
    dde-application-wizard0.1.13
    dde-clipboard6.1.6
    dde-launcher被 dde-launchpad 取代,不再使用
    dde-dock被 dde-shell 取代,不再使用

    dde-application-manager

    由于涉及到诸多关于应用识别的改善,故建议总是使用最新版本。

    dde-shell

    dde-shell 旨在将 DDE 桌面环境插件化与模块化,降低开发难度,使各个组件的替换变得更加容易,并且提供更好的桌面环境集成支持。alpha 阶段相比 preview 阶段集中在缺陷的修复上,并未涵盖太多的结构调整和新特性。对于 alpha 以及更早版本的变化,请阅读之前的博客文章。

    为保障 dde-shell 在 Qt 6.8.0 或 6.8.1 的环境可以正常运行(即使是X11环境下),若 ,则 必须 给 qtwayland 打下面的 patch:

    另外,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 组织的软件包,此处一并给出了组织名:

    packageversion
    vioken/waylib0.6.13
    vioken/qwlroots0.5.3
    treeland0.5.20
    ddm0.1.10

    Treeland 环境

    Treeland 环境相较于 deepin 23 阶段有了较多的提升,不过由于 Treeland 迭代开发过程中我们对 Qt 以及 wlroots 进行了诸多完善,故 Treeland 对 Qt 以及 wlroots 等组件有较高的版本要求,以及可能需要应用一些额外的 patch。

    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)

    获取移植帮助

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

    Thursday, January 16, 2025

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

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

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

    概览

    相对于 deepin 23,在 deepin 25 中,包括桌面、通知中心在内的大部分旧的 DDE 桌面组件已转化为 dde-shell 插件形式,以供更好的跨显示环境兼容性。包括控制中心在内的组件也已开始提供全新设计以及基于 QML 的全新界面。同时,我们也对 Qt、DTK 进行了更多完善,以供 DDE 组件以及 Treeland 能够更好的运行。

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

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

    主要组件

    DTK 与 DTK6

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

    packageversion
    dtkcommon5.7.7
    dtklog0.0.2
    dtkcore5.7.7
    dtkgui5.7.7
    dtkwidget5.7.7
    dtkdeclarative5.7.7
    qt5integration5.7.7
    qt5platform-plugins5.7.7
    dtk6core6.0.27
    dtk6gui6.0.27
    dtk6widget6.0.27
    dtk6declarative6.0.27
    qt6integration6.0.27
    qt6platform-plugins6.0.27

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

    关于 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。

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

    packageversion
    dde-session1.99.7
    dde-application-manager1.2.23
    dde-shell1.99.19
    dde-launchpad1.99.5
    dde-tray-loader1.99.12
    dde-application-wizard0.1.11
    dde-clipboard6.1.4
    dde-launcher被 dde-launchpad 取代,不再使用
    dde-dock被 dde-shell 取代,不再使用

    dde-application-manager

    由于涉及到诸多关于应用识别的改善,故建议总是使用最新版本。

    dde-shell

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

    关于 shell 的服务启动方面,为了方便故障排查,dde-shell 从原本的单进程转为了两个进程(分别提供桌面和任务栏两个部分)。另外,shell项目的任务栏部分在此阶段也配合 dde-application-manager 对应用识别的准确度进行了诸多完善。若仍有发现应用错误识别和错误分组的问题,欢迎及时反馈。

    为保障dde-shell在Qt6.8之后的环境可以正常运行(即使是X11环境下),必须给qtwayland打下面的patch:

    https://codereview.qt-project.org/c/qt/qtwayland/+/603556

    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 组织的软件包,此处一并给出了组织名:

    packageversion
    vioken/waylib0.6.10
    vioken/qwlroots0.5.2
    treeland0.5.17
    ddm0.1.9

    Treeland 环境

    Treeland 环境相较于 deepin 23 阶段有了较多的提升,不过由于 Treeland 迭代开发过程中我们对 Qt 以及 wlroots 进行了诸多完善,故 Treeland 对 Qt 以及 wlroots 等组件有较高的版本要求,以及可能需要应用一些额外的 patch。

    DDM

    尽管 DDM 目前是基本功能可用状态,DDM 目前仍相对而言不够稳定。对于打包移植而言,建议采用其他DM来启动用户级的treeland。

    对于其它 DM,只需要打包时安装 usr/share/wayland-sessions/treeland-user.desktop 即可。

    Qt 补丁

    下述假定您的发行版使用的 Qt 版本为 Qt 6.8.1。

    为保障 dde-shell 在 Treeland 上可以正常运行,需要打下面的 patch,否则可能会出现 dde-shell 崩溃的情况。

    https://codereview.qt-project.org/c/qt/qtbase/+/607654

    如果你在 Treeland 下遇到小 launchpad 无法输入中文的问题,可以打下面的 patch,但是该 patch 目前尚未进行完整测试,可能存在一些问题。

    https://codereview.qt-project.org/c/qt/qtbase/+/611940

    另外,如果你的发行版所附的 Qt 6.8 版本并未更新至 Qt 6.8.1,则可能需要打两个额外的补丁,可参见 DDE Qt 6.8 适配说明

    获取移植帮助

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

    Saturday, November 9, 2024

    Friday, November 1, 2024

    回顾

    DDE 在 v15 时期,使用 Mutter 作为带合成器的窗管,以及 Metacity

    Friday, October 25, 2024

    DDE Qt 6.8 适配说明

    Qt 6.8 发布已经有一段时间了,各个发行版尝试移植 DDE 时发现包括 dde-shell 在内的几个组件存在比较明显的问题,DDE 小组进行了相关的紧急修复。由于 DDE 部分项目也在分叉维护的状态,为了方便各位移植人员有效进行移植,故在此罗列相关注意事项。

    注:笔者所测试的环境为 Arch Linux,下述为 2024/10/25 testing 仓库状态下的测试结论。若未另行说明,则下述涉及到的项目名称仍然使用了与 DDE 对应项目原始仓库的名称,而非各个发行版下的包名。

    [!NOTE] 2024/11/06更新:对于 dde-launchpad、dde-tray-loader、dde-shell 目前均有新的维护分支版本,部分版本中已包含了下述中涉及到的一些 patch 的修复。本博客目前只更新了实机验证可用的新 tag 版本,但你也可以尝试未验证但位于维护分支的新 tag。

    分支与 tag 说明

    因维护需要,对于部分 DDE 组件(dde-shell、dde-launchpad、dde-tray-loader),我们对 deepin 23 所使用的分支创建了名为 release/beige 的维护分支。也会在维护分支上打对应的维护更新用的 tag。

    由于 deepin 现阶段的提测流程需要对提测版本打 tag,故我们对主干(master)分支也会打 tag。为了在不与现行规范冲突的情况下尽可能表示区分,我们使用格式为 x.99.z 的 tag 标记此版本是尚在开发中的版本。开发中的 tag 版本事实上在满足一定条件下也可供外部使用,但我们不保证 x.99.z 中 z 位更新时的兼容性,故仍然建议优先使用 release/beige 上的 tag 版本。

    Qt 6 Wayland

    由于 dde-shell 的托盘加载部分(dde-tray-loader)使用了 Wayland(即便是 x11 环境也如此)实现应用的嵌入,故对 Qt 6 的 wayland 组件存在依赖。有下述两个 Patch 需要应用到 Qt 6 Wayland 组件之上:

    dde-shell

    Patch 说明

    升级至 Qt 6.8 后,dde-shell 可能存在面板无任何内容的情况,就于此问题,需要应用这个 patch:

    https://github.com/linuxdeepin/dde-shell/commit/46871c83cf8ecfcf83bf2fb49e1f09af997eca96

    版本建议

    • 若目标发行版原本在使用 1.0.0 版本,则建议至少更新到 1.0.2
    • 1.0.3 以上版本依赖 treeland-protocols 项目,进行打包即可,建议对齐打包后至少更新 dde-shell 至 1.0.4
    • dde-shell 主干分支存在 1.99.1,但包括此版本在内的主干分支已不再在任务栏提供启动器图标,故需要配合启动器主干分支使用(启动器暂无 1.99.z 版本)

    tl;dr:建议打包 treeland-protocols 后更新至至少 1.0.4

    treeland-protocols

    被 dde-shell 1.0.3 以上版本所依赖。

    版本建议

    建议打包/更新至 0.4.1

    dde-tray-loader

    Patch 说明

    任务栏托盘区域的弹出面板(例如点击时间组件后的面板)早期版本有位置不正确的问题,需要应用这个 patch: https://github.com/linuxdeepin/dde-tray-loader/commit/664b093b6a913764fedbac9110927f26978aa8c9 。最新版本(1.0.5 起)中已经修正相关问题。

    版本建议

    建议更新至 1.0.5

    dde-launchpad

    Patch 说明

    启动器的维护分支版本应该可以在无任何修改的情况下正常工作,尽管启动器小窗口模式的面板位置可能不对,但位置问题暂不计划在维护分支解决。

    启动器主干分支不存在上述问题,但主干分支暂无 1.99.z tag。

    版本建议

    在之前的移植过程中发现小窗口搜索结果界面可能存在显示错位问题,此问题已在 1.0.6 修复,故建议更新至 1.0.6

    dde-application-manager

    Patch 说明

    不需要 patch。

    版本建议

    一个 deepin 23 的所谓“特性”即,父进程启动的子进程一般会被识别归属为父进程,会导致例如在终端启动 vscode,打开的 vscode 窗口会和终端共用相同图标的问题。此问题已经在最新维护版本得到解决。直接更新dde-shell (>= 1.0.4) dde-application-manager(>=1.2.16)版本即刻解决。

    建议更新至 1.2.16