社区里的一些朋友希望在桌面上设置动态背景,类似于 Windows上的WallpaperEngine,在桌面图标后面播放视频。
我把dde-desktop相关部分的源代码看了一下,设计出了一个巧妙的方案。
修改 dde-desktop/view/background* 模块可以创造一个透明背景,再把播放器窗口设置为桌面,桌面图标位于视频的上层。
具体的做法是:dde-desktop 启动时如果开启了 --video-wallpaper命令行选项,则选择一个特定的外部窗口(播放器)作为桌面,backgroundWidget设置透明背景、Frameless、StayOnBottom。
修改后的dde-desktop带参数启动后,在其他软件配合下实现动态背景的效果。(dde-desktop本身不能播放视频)
这个实现方案相当优秀。它对原有代码修改少、与播放器的耦合程度很低、易于扩展功能、方便其他人维护。唯一的缺点是:返回桌面的时候,(播放器窗口)桌面会把桌面图标挡住。这个也容易解决,只要当播放器窗口激活后,再激活dde-desktop窗口即可。
代码在我fork的仓库中 feat-video-wallpaper 分支里。它基于v20最新版,即基于commit 15325552572d1d5c53387c54763f57c4e13bd1e9 (tag: 5.2.0.46) 。
https://github.com/jiangzc/dde-file-manager/tree/feat-video-wallpaper
社区里的一些朋友希望在桌面上设置动态背景,类似于 Windows上的WallpaperEngine,在桌面图标后面播放视频。
我把dde-desktop相关部分的源代码看了一下,设计出了一个巧妙的方案。
修改 dde-desktop/view/background* 模块可以创造一个透明背景,再把播放器窗口设置为桌面,桌面图标位于视频的上层。
具体的做法是:dde-desktop 启动时如果开启了 --video-wallpaper命令行选项,则选择一个特定的外部窗口(播放器)作为桌面,backgroundWidget设置透明背景、Frameless、StayOnBottom。
修改后的dde-desktop带参数启动后,在其他软件配合下实现动态背景的效果。(dde-desktop本身不能播放视频)
这个实现方案相当优秀。它对原有代码修改少、与播放器的耦合程度很低、易于扩展功能、方便其他人维护。唯一的缺点是:返回桌面的时候,(播放器窗口)桌面会把桌面图标挡住。这个也容易解决,只要当播放器窗口激活后,再激活dde-desktop窗口即可。
代码在我fork的仓库中 feat-video-wallpaper 分支里。它基于v20最新版,即基于commit 15325552572d1d5c53387c54763f57c4e13bd1e9 (tag: 5.2.0.46) 。
https://github.com/jiangzc/dde-file-manager/tree/feat-video-wallpaper