feat: native video wallpaper support via QML MediaPlayer - #1710
Conversation
|
Worth also mentioning this seems to have a cli PR counterpart in caelestia-dots/cli#136 to achieve full functionality. |
Yeah, you're right. I forgot to mention this. |
dxnnv
left a comment
There was a problem hiding this comment.
These suppressions appear to be compensating for a missing CI dependency rather than an issue in QML. The lines marked don't actually produce any linter warnings in a normal install, the properties are just a result of the CI image not installing qt6-multimedia, so qmllint can't resolve VideoOutput as a QQuickItem. Hiding QtMultimedia locally reproduces the exact warnings, while installing it removes them.
The linting workflow doesn't necessarily have to pass for this, since it's not an issue with the code and would be fixed if/when this is merged when Sora updates the CI image to include qt6-multimedia/qt6-multimedia-ffmpeg.
dxnnv
left a comment
There was a problem hiding this comment.
Seems these can also be dropped
- Wallpaper.qml: single-layer architecture with MediaPlayer+VideoOutput for videos, CachingImage for images, fade-in animations, timer-based cleanup preventing flash between transitions - WallpaperItem.qml: video/image badge icons, thumbnail via .thumbs/ - Wallpapers.qml: merged image+video FileSystemModels - Images.qml: isValidVideoByName, isVideoFile utilities - Paths.qml: videowallsdir property - shell.qml: QT_MEDIA_BACKEND=ffmpeg
- Multi-line createObject calls per qmlformat - Space before function parens, semicolons per qmlformat - anchors.fill: root instead of parent in videoContainer - qmllint disable pragmas for intentional dynamic typing - extraSmall -> small (property does not exist)
When a fullscreen window is focused or game mode is enabled, video wallpapers are fully unloaded from memory and replaced with a static thumbnail. On exit, the video is recreated. - isPaused property tracks fullscreen and GameMode state - thumbPathFor() extracts thumbnail path from video source - onSourceChanged respects isPaused (shows thumbnail during pause) - onIsPausedChanged destroys/recreates components for full memory release - ~300MB memory saved and ~0% CPU when paused
Co-authored-by: danny <danny@atropos.cc>
Co-authored-by: danny <danny@atropos.cc>
Co-authored-by: danny <danny@atropos.cc>
Co-authored-by: danny <danny@atropos.cc>
Co-authored-by: danny <danny@atropos.cc>
Co-authored-by: danny <danny@atropos.cc>
6888c4d to
605094b
Compare
0132eb0 to
774e523
Compare
- WallItem: detect video files, load .thumbs/*.jpg preview, show badge - WallpaperAndStyle: show video thumbnails in main preview - WallpaperSelect: include videowallsdir items directly in grid
f7fd011 to
2543ec7
Compare
Edit: this PR has a CLI part caelestia-dots/cli#136
Edit 2:
Edit 3:
Edit 4: