Repository navigation
Play the wallpaper during Show Desktop; apply pause-mode changes at once - #34
Merged
Merged
Conversation
KWin's "Show Desktop" (Meta+D, the panel button) hides windows without minimizing them. The task model keeps reporting them as maximized, so with a maximized/fullscreen pause mode the wallpaper stayed paused while the user was looking straight at it. WindowModel now reads KWindowSystem.showingDesktop: while it is set the wallpaper plays, and entering or leaving Show Desktop re-runs the decision. Changing the pause mode in the settings also only took effect at the next window event; onModePlayChanged now schedules a re-decision. org.kde.kwindowsystem is a new QML import, declared as a hard dependency in every manifest and in packaging-qml-imports.test.mjs: kf6-kwindowsystem (Fedora), kf6-kwindowsystem-imports (openSUSE), kwindowsystem (Mageia, Arch), qml6-module-org-kde-kwindowsystem (Debian). openSUSE is the reason it can't be left to plasma-workspace: it splits the QML module into the -imports package, which no Plasma package requires. Tests get a KWindowSystem stub (showingDesktop only), and tst_windowmodel.qml covers playing during Show Desktop, pausing again when it ends, and an immediate re-decision on a pause-mode change; all three fail without the change.
test_showDesktop_leavingItPausesAgain in tests/qml/tst_windowmodel.qml
passed even with the Connections { onShowingDesktopChanged } block
removed from WindowModel.qml, because triggerTimer was still running
from the preceding _runUpdate().
The test now stops triggerTimer and checks it is stopped before setting
KWindowSystem.showingDesktop = false, then checks the timer is running
again. Only the signal handler can restart it, so deleting the handler
now fails the test.
Owner
|
First of all, thanks for all the PRs.. looking through them all right now. Going to be adding a couple of tests and some small changes to some. |
CaptSilver
approved these changes
Oct 13, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
KWin's Show Desktop (Meta+D, or the panel button) hides windows without minimizing them. The task model keeps reporting them as maximized, so with a maximized/fullscreen pause mode the wallpaper stayed paused while the user was looking straight at it.
A pause-mode change in the settings also only took effect at the next window event.
Change
WindowModelreadsKWindowSystem.showingDesktop: while it is set the wallpaper plays, and toggling it re-runs the pause decision.onModePlayChangedschedules a re-decision, so a new pause mode applies at once.org.kde.kwindowsystemis a new QML import, andWindowModelis created unconditionally, so it is declared as a hard dependency in every manifest and inpackaging-qml-imports.test.mjs. I checked each name against the distro's own metadata:kf6-kwindowsystemdnf repoquery --whatprovideson the module'sqmldirkf6-kwindowsystem-imports%files imports)kwindowsystemqml6-module-org-kde-kwindowsystemkwindowsystempacman -QlToday it mostly arrives anyway: on Fedora and Arch the module ships in the same package as
libKF6WindowSystem, which plasma-workspace links against, and Debian's plasma-workspace depends on the QML package directly. openSUSE is why it can't be left to that: there the module is inkf6-kwindowsystem-imports, and none of plasma6-workspace, plasma6-desktop, plasma6-session, kwin6, libplasma6, plasma6-integration or systemsettings6 requires it. On Mageia the module is a package of its own,kwindowsystem, separate from the library (lib64kf6windowsystem6).Tests
KWindowSystemstub (showingDesktoponly).tst_windowmodel.qmlcovers: plays during Show Desktop, pauses again when it ends, and re-decides immediately on a mode change. All three fail without the change.tools/scripts/preflight.shpasses (run inside afedora-toolbox:latestcontainer built fromDEPS_FEDORA,WEK_IN_CI=1). One note: on this laptop the fuzz step times out on the checked-in seedtests/fuzz_corpus/WPShaderCompile/seed/58392d50…(~33 s per compile under ASAN+UBSAN, identical on cleanmain), so I ran preflight with--no-fuzzand then all fuzz targets with the same settings except-timeout=60: no findings.Setup: Plasma 6 (Wayland), KWin, Intel Iris Xe (RPL-P), 2520x1680 @ 120 Hz laptop panel, Manjaro.