TODO:小技巧(后续单独放一个官网页面)
- 在任务栏上对已经打开的应用图标滚动鼠标滚轮可以查看所有该应用的窗口
- win + A 展示全部窗口
- 热区很好用
DEBFULLNAME=shenmo DEBEMAIL="shenmo@spark-app.store" dh_make -n -p $(basename $(pwd))_1.0.0
dde-first-run 在 https://gitee.com/GXDE-OS/gxde-default-settings ,而执行它的配置在 https://gitee.com/GXDE-OS/gxde-default-settings/blob/master/etc.d/skel/.config/autostart/dde-first-run.desktop
deepin-wm-dbus ,用来和 GXCC 的 快捷键设置 互动并提供值,用于 dde-dock 的对已打开应用滚轮的互动
kwin的本体在 gxde-kwin,基于 deepin-kwin 修改
并非上游版本,为了覆盖掉 Debian 13 的版本实际上是用6.0.0魔改版改版本号到了6.1.0
魔改内容: https://gitee.com/GXDE-OS/dde-qt-dbus-factory/commit/cc9db3d6e4beeb4b7eaae6ff97c9f3062a587795
Spec: https://gitee.com/shenmo7192/dde-file-manager-menu-oem
- 终端里存的远程管理ip和密码在 ~/.config/deepin/gxde-terminal/server-config.conf
D_DTK_SIZEMODE=1环境变量即可
/usr/share/backgrounds/GXDE/dtk2/global/background-" + theme,~/.local 也会生效
如果用KVM或者其他虚拟机做Wayland适配工作,需要注意的是Treeland下必须开启软渲染,GL大概率不可用,没有blur支持
推荐虚拟机使用Wlcom,不用开pixman软渲染,可以直接在虚拟机上检查模糊效果,然后实体机回Treeland细调
在这几个WM下切换建议切换WM前彻底重启一次
建议ssh到VM上,终端挂在那边,必要时可以在VM图形卡死时执行pkill或者在WM崩溃后读取日志而不需要切换TTY
- libdtkcore2其实是指向libdtkcore5的链接
- libdtkcore2-dev其实是依赖libdtkcore5-dev的空包
- libdtkwidget2会通过启动时候put环境变量的方式强制使用dlight主题
- Dtk2 bin在libdtkcore-bin,而dtk5的是libdtkcore5-bin,但是开发包是反过来的,libdtkwidget-dev是libdtkwidget5的,libdtkwidget2-dev才是dtk2的
- libdtkwidget2-dev会把Include装/usr/include/dtk5里
- 如果没有 gxde-qt5integration , Dtk2应用在有Dtk5的环境中会在退出时随机崩溃,所以开发的应用请依赖gxde-qt5integration
- startgxde 的 启动指令是 startdde ,只是换了个包名
- 文管和启动器启动应用的dbus在startdde而不是dde-daemon实现
- https://gitee.com/GXDE-OS/startdde 在测试前不可再推构建,默认session怀疑需要改deepin-desktop-schemas,改GXDE 入口无效,建议Kwin测试完毕之后再改,别一个一个改
- Go 写的,看不懂,改不动,不敢动,为了和dde-daemon区别,使用 deepin-daemon 名
- 新接口请加到 https://gitee.com/GXDE-OS/gxde-daemon ,尽量别碰dde-daemon
单独维护了gxde-movie,文管等依赖改为libgxmr,引入项目也使用libgxmr
但是使用的命名空间还是dmr,函数也用dmr开头
- 依赖deepin-app-service提供服务接口,需要dde-dconfig-daemon和editor配置
- 在dock上面滑动鼠标展示所有窗口功能失效
- /usr/share下的decoration.json 并不会 生效
- dbus-wm要打开否则在dock上面滑动鼠标展示所有窗口功能会失效,控制中心也会失效
- /usr/share下的decoration.json 并不会 生效
- 代码中指定的标题栏宽度 不会 随着缩放变化,几个像素就是几个像素
在Treeland上使用layer-shell-qt将gxde-desktop-panel改造为Wayland程序,无法对桌面图标进行重命名,桌面面板不接受任何键盘输入。
注意: 以下提及的Treeland源码提交截止至
0d0a4c35c9b6efd8806302f493beececa849ed69,提交标题为「Merge: 20cd1eb e8dd819」,上游为https://gitee.com/GXDE-OS/treeland.git。
在Treeland的源码中,./src/core/shellhandler.cpp的770 ~ 784行提及了关于requestActive的规定:
...
} else if (wrapper->type() == SurfaceWrapper::Type::Layer) {
connect(wrapper, &SurfaceWrapper::requestActive, this, [wrapper]() {
auto layerSurface = qobject_cast<WLayerSurface *>(wrapper->shellSurface());
if (layerSurface->keyboardInteractivity() == WLayerSurface::KeyboardInteractivity::None)
return;
/*
* if LayerSurface's keyboardInteractivity is `OnDemand`, only allow `Overlay` layer
* surface get keyboard focus, to avoid dock/dde-desktop grab keyboard focus When they
* restart
*/
if (layerSurface->layer() == WLayerSurface::LayerType::Overlay
|| layerSurface->keyboardInteractivity()
== WLayerSurface::KeyboardInteractivity::Exclusive)
Helper::instance()->activateSurface(wrapper);
});
...其中,这里有一行:
if (layerSurface->keyboardInteractivity() ==
WLayerSurface::KeyboardInteractivity::None) {
return;
} // 为了方便阅读我格式化了一下以下是对这个操作的注释:
If
LayerSurface'skeyboardInteractivityisOnDemand, only allowOverlaylayer surface get keyboard focus, to avoiddock/dde-desktopgrab keyboard focus When they restart.(我自己翻译的)
如果
LayerSurface的keyboardInteractivity为OnDemand,仅允许Overlay类型的表面获取键盘焦点。这么做的目的是防止dde-dock/dde-desktop在重启时误获取键盘焦点。
gxde-desktop-panel是一个正常的LayerShellQt::Window::LayerBackground类而不是Overlay类(设置Background是对的,不然桌面层级不对),根据上述注释,无法获取键盘焦点...
仅在Treeland上发现了这个情况,在Mutter上没有问题,目前针对Treeland做了一个补丁,请见本项目的gxde-rename-interface-treeland,仅Treeland下用这个子项目,其它WM均走gxde-desktop-panel的原逻辑。
当前Wlcom并非原版,部分移植了DDE Shell协议(但是没有全部移植),具体实现请参阅<Wlcom (GXDE forked edition) project root>/src/view/treeland_dde_shell.c.