Instant wallpaper transition

Hello,

Do you know if there’s a way to make the transition between two wallpapers instant (no fading transition)?

The only solutions I found are

  • Making all animations instant (Animations section of the System Settings),
  • or using a third-party tool (such as martenjj’s wallpaperswitch; not tested)

Neither solution is ideal. I wonder if there is a native way (maybe some configuration file not exposed by the System Settings app) to achieve that, and just that.

As I use several input methods (fcitx5), I find it useful to change the background color of my desktop depending on the currently active input method, and the 1-2 seconds transition just makes that visual feedback less useful.

there is a wallpaper-only fade setting. it just isnt in System Settings.

~/.config/plasma-org.kde.plasma.desktop-appletsrc

under [Containments][N][Wallpaper][org.kde.image][General]
(or org.kde.slideshow if you use that)

TransitionAnimationDuration=0

then:
systemctl --user restart plasma-plasmashell

that was added as a hidden config (default around 1000ms). 0 should kill just the wallpaper fade and leave the rest of your animations alone. if it still fades on your build, plasma is ignoring it and youre stuck with global Animation speed or a custom wallpaper plugin.

Thanks for your reply.

But no matter the value I set for TransitionAnimationDuration (be it 0 or, say, 10000), the behaviour is the same (around 1-2 secs transition).

I’m using the [org.kde.image] variant.

Looking for TransitionAnimationDuration in the code, the only hit is in this bit of code, in kde/src/plasma-workspace/wallpapers/image/imagepackage/contents/ui/ImageStackView.qml

replaceEnter: Transition {
    NumberAnimation {
        id: replaceEnterOpacityAnimator
        property: "opacity"
        from: 0
        to: 1
        // The value is to keep compatible with the old feeling defined by "TransitionAnimationDuration" (default: 1000)
        duration: Math.round(Kirigami.Units.veryLongDuration * 2.5)
    }
    enabled: !view.doesSkipAnimation
}

I wonder if that setting was deactivated…?

I’m running
KDE Plasma Version: 6.7.5
KDE Frameworks Version: 6.30.0

This is the section of configuration I modified

[Containments][89][Wallpaper][org.kde.image][General]
Color=0,0,0
DynamicMode=3
FillMode=1
Image=file:///usr/share/wallpapers/Kokkini/
SlidePaths=/usr/share/wallpapers/
TransitionAnimationDuration=0

I wonder, if I’m just being dumb, as I don’t actually understand the code…

The following solution (provided by ChatGPT) worked:

mkdir -p ~/.local/share/plasma/wallpapers

cp -a /usr/share/plasma/wallpapers/org.kde.image \
      ~/.local/share/plasma/wallpapers/

Then in

~/.local/share/plasma/wallpapers/org.kde.image/contents/ui/ImageStackView.qml

change

onModelImageChanged: Qt.callLater(loadImage);

into

onModelImageChanged: Qt.callLater(loadImageImmediately);

I understand that’s a nasty solution prone to break. But it will do.

What would be useful here, is a graphical field in the wallpaper system settings to tweak fade time (and then you can enter 0 ms, for example).

IMO the way this conversation has gone so far, is a mistaken way to look at this problem. Instead of trying to fix the issue upstream, this “solution” includes hacky workarounds that only helps people who find this post and manage to reproduce it. The downsides however include:

  • Fixes like these often do not last, and it might even break tomorrow, also considering LLMs were involved with things the user doesn’t quite understand.

  • Apart from the individuals who find it, nobody else benefits from this on the whole. You’ve essentially “forked” (metaphorically) some part of KDE, applied the fix, but did not upstream the issue.

Solution: Feature request (and being as objective as you can, with detail)
Go to System Settings → Wallpaper. Then click the hamburger button → “Report a Bug in the Current Page”

You will be sent to bug report template on bugs.kde.org with the essential fields already filled in. Make sure to fill in any missing fields, and use the description template they provide.

This takes time and care. It might take a little longer than to write up a post like this. But it’s also the best way to have fixes and improvements benefit everyone (including yourself).

Also just keep it to reporting only, suggesting a technical solution is not needed, unless you want to fix bug upstream yourself, but you can link this forum post to give the developers some hints.