Environment
- Plugin version: 2.12.0
- Plasma: 6.6.6
- Qt: 6.10.2
- OS: Ubuntu 26.04 LTS
- QT_MEDIA_BACKEND: gstreamer (confirmed active in the running plasmashell process's environment)
Symptom
Video wallpaper shows a persistent black screen. Confirmed via the plugin's own DebugEnabled overlay that this is a genuine NoMedia state, not a decode/codec failure (InvalidMedia) or a still-loading state (LoadingMedia).
What I ruled out before filing
- isLoading race on plugin switch — known issue, already avoided in my repro by writing config well after the plugin was already active (not a fresh switch), and independently by fully restarting plasmashell and re-testing.
- Stale
LastVideo vs VideoUrls mismatch — real, separate bug I found (when ResumeLastVideo is on and LastVideo doesn't match any entry in the current VideoUrls, main.currentSource resolves to Utils.createVideo(""), which FadePlayer.next()'s direct assignment (playerSource = root.currentSource) then captures into the active player). I fixed this on my own tool's side (kept LastVideo in sync with VideoUrls) and confirmed via the debug overlay that main.currentSource.filename correctly resolves to the intended video. next() demonstrably runs — the debug overlay's player: 1/2 value toggles between writes, confirming the primary/secondary player swap happens.
- Config validity — read back via
readConfig after each write; VideoUrls is well-formed JSON, enabled: true, filename is a correctly percent-encoded file:// URI to an existing, valid, directly-playable file (confirmed the file plays fine both in an external player and via KDE's "Preview" button in this plugin's own settings dialog, which appears to use Haruna — same file plays correctly there).
- Stale/corrupted session state — did a full
systemctl --user restart plasma-plasmashell.service, confirmed the new process has QT_MEDIA_BACKEND=gstreamer in its environment, and re-tested a single clean config write against the fresh process. Same result: playing: true (the outer main.qml computed property), but player1 playing: false, player2 playing: false, mediaStatus: 0 (NoMedia), nothing renders.
So even with a fresh process, the documented gstreamer backend fix already active, and a config that is provably correct and consistent (right filename, enabled: true, LastVideo in sync), the underlying VideoPlayer never actually receives a working media source. This looks like it's inside FadePlayer.qml's player/otherPlayer selection or the QML→QtMultimedia source handoff itself, rather than anything about how the config is written.
Happy to provide the exact qdbus scripting sequence used to reproduce this from a completely clean plasmashell restart, or test any suggested QML-side debugging (extra console.log in FadePlayer.qml, etc.), if that's useful.
Environment
Symptom
Video wallpaper shows a persistent black screen. Confirmed via the plugin's own DebugEnabled overlay that this is a genuine
NoMediastate, not a decode/codec failure (InvalidMedia) or a still-loading state (LoadingMedia).What I ruled out before filing
LastVideovsVideoUrlsmismatch — real, separate bug I found (whenResumeLastVideois on andLastVideodoesn't match any entry in the currentVideoUrls,main.currentSourceresolves toUtils.createVideo(""), whichFadePlayer.next()'s direct assignment (playerSource = root.currentSource) then captures into the active player). I fixed this on my own tool's side (keptLastVideoin sync withVideoUrls) and confirmed via the debug overlay thatmain.currentSource.filenamecorrectly resolves to the intended video.next()demonstrably runs — the debug overlay'splayer: 1/2value toggles between writes, confirming the primary/secondary player swap happens.readConfigafter each write;VideoUrlsis well-formed JSON,enabled: true, filename is a correctly percent-encodedfile://URI to an existing, valid, directly-playable file (confirmed the file plays fine both in an external player and via KDE's "Preview" button in this plugin's own settings dialog, which appears to use Haruna — same file plays correctly there).systemctl --user restart plasma-plasmashell.service, confirmed the new process hasQT_MEDIA_BACKEND=gstreamerin its environment, and re-tested a single clean config write against the fresh process. Same result:playing: true(the outer main.qml computed property), butplayer1 playing: false,player2 playing: false,mediaStatus: 0(NoMedia), nothing renders.So even with a fresh process, the documented gstreamer backend fix already active, and a config that is provably correct and consistent (right filename,
enabled: true,LastVideoin sync), the underlyingVideoPlayernever actually receives a working media source. This looks like it's insideFadePlayer.qml's player/otherPlayer selection or the QML→QtMultimedia source handoff itself, rather than anything about how the config is written.Happy to provide the exact
qdbusscripting sequence used to reproduce this from a completely clean plasmashell restart, or test any suggested QML-side debugging (extraconsole.loginFadePlayer.qml, etc.), if that's useful.