[packaging] 尝试:在GXDE上使用Treeland作为Wayland WM并引导桌面启动
Tofloor
poster avatar
CharOfString
deepin
11 hours ago
Author

在GXDE上使用Treeland作为Wayland WM并引导桌面启动

背景:最近尝试在GXDE OS 25上做一些Wayland支持的适配工作,发现适配KWin6的话总会有KF6依赖和系统的KF5冲突导致卸载一堆系统包的情况,最近决定尝试一下Deepin新出的Treeland合成器。

当前已知问题

用户体验相关

  • 控制中心(gxde-control-center)不工作,且出现的位置好奇怪

  • Dock不显示

  • DTK模糊(包括 DTK2DTK5以及)不生效

  • 圆角设置失效

  • GXDE截图录屏预计不工作(翻阅源码时发现其在 Wayland会话下使用 KWAYLAND

    gxde-treeland-issue.png

(注意:桌面体验不包含那根顶栏,这是我为了代替不工作的Dock自己写的)

后端相关

  • 在虚拟机上遇到 WLR_RENDERER=pixman required: virgl dmabuf import fails:不得不使用软件渲染,性能表现降级。
  • image://dtk.shadow provider fails:似乎是窗体阴影问题,不算fatal。
  • Original treeland.desktop (Hidden=true, Exec=/usr/bin/dde-session) broken:似乎是由于 dde-session未安装。

依赖安装

⚠️ 注意:使用 apt安装这些依赖时候不建议使用 apt install -y,建议仔细检查 apt的「将要安装」与「将要卸载」部分,仔细检查这期间会不会有GXDE系统的包或者其他包由于冲突被卸载!!

安装Treeland本体

$ sudo apt install treeland

安装Treeland的依赖

为了修复包括但不限于 DTK6 QML module (org.deepin.dtk) | module not installed, WindowMenu create fail, abortQML chain broken: ButtonPanel -> CicleSpreadAnimation -> OpacityMask -> SoftwareOpacityMask等错误,需要至少安装至少如下两个包:

$ sudo apt install libdtk6declarative qml6-module-qt5compat-graphicaleffects

编写Treeland会话文件

以下提供了两个我写好的Session,选择需要的写入即可(当然也可以选择两个都写入)。

ℹ️ 注意: 写入完session需要重启 LightDM才能在登录界面看到新会话,以下是重启LightDM的指令:

# 在TTY下执行
sudo systemctl restart lightdm

如果没有其他文件要保存了、也没有其他用户使用的情况下亦可以重启整台电脑。

选项一:纯 Treeland会话

如果当前是实体机:

#!/bin/bash
export XDG_SESSION_TYPE=wayland
export TREELAND_RUN_MODE=user
export XDG_SESSION_DESKTOP=Treeland
exec /usr/bin/treeland.sh "$@"

如果当前是QEMU/KVM虚拟机:

#!/bin/bash
export XDG_SESSION_TYPE=wayland
export TREELAND_RUN_MODE=user
export XDG_SESSION_DESKTOP=Treeland
export WLR_RENDERER=pixman    # virgl的dmabuf在上面似乎有点问题,用软渲染,性能这一块嘛...
exec /usr/bin/treeland.sh "$@"

您需要将其保存为:/usr/share/wayland-sessions/treeland-plain.desktop。下一次便可以选择 treeland-plain会话进入。

选项二:Treeland + GXDE 桌面

如果当前是实体机:

#!/bin/bash
export XDG_SESSION_TYPE=wayland
export TREELAND_RUN_MODE=user
export XDG_SESSION_DESKTOP=Treeland
export DTK2_XWAYLAND=dxcb
exec /usr/bin/treeland.sh -r /usr/bin/startdde "$@"

如果当前是QEMU/KVM虚拟机:

#!/bin/bash
export XDG_SESSION_TYPE=wayland
export TREELAND_RUN_MODE=user
export XDG_SESSION_DESKTOP=Treeland
export WLR_RENDERER=pixman    # virgl的dmabuf在上面似乎有点问题,用软渲染,性能这一块嘛...
export DTK2_XWAYLAND=dxcb
exec /usr/bin/treeland.sh -r /usr/bin/startdde "$@"

您需要将其保存为:/usr/share/wayland-sessions/gxde-treeland.desktop。下一次便可以选择 gxde-treeland会话进入。

部分Treeland的指令选项

  • --help: 打印帮助。
  • -r, --run : 运行子进程,有点类似KWin的 --exit-with-session
  • --lockscreen: 锁屏模式,需要 DDM auth socket
  • --try-exec: 仅测试,不在屏幕显示。
  • --enable-debug-view: 开启调试View。
Reply Favorite View the author
All Replies
avatar
mozixun
Moderator
11 hours ago
#1

treeland目前的实现不成熟, 试一下用Niri/Hyprland作为渲染后端运行情况如何?

Reply View the author
avatar
CharOfString
deepin
10 hours ago
#2
It has been deleted!