From 9d076bf542b9d738487d5513cf782356398392fb Mon Sep 17 00:00:00 2001 From: Marco Allegretti Date: Mon, 4 May 2026 08:43:22 +0200 Subject: [PATCH] Sync lockscreen wallpaper with homescreen changes When homescreen wallpaper is set, also persist the same image for lockscreen. Add a one-time migration in loadHomescreenSettings() that updates lockscreen when it is unset or still points to legacy Next wallpaper. --- .../wallpaperimageplugin/wallpaperplugin.cpp | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/components/wallpaperimageplugin/wallpaperplugin.cpp b/components/wallpaperimageplugin/wallpaperplugin.cpp index a9bd3e3b..084ceb46 100644 --- a/components/wallpaperimageplugin/wallpaperplugin.cpp +++ b/components/wallpaperimageplugin/wallpaperplugin.cpp @@ -20,6 +20,15 @@ #include #include +namespace +{ +bool isLegacyNextWallpaperPath(const QString &path) +{ + return path == QStringLiteral("Next") || path.startsWith(QStringLiteral("/usr/share/wallpapers/Next/")) + || path.startsWith(QStringLiteral("file:///usr/share/wallpapers/Next/")); +} +} + WallpaperPlugin::WallpaperPlugin(QObject *parent) : QObject{parent} , m_homescreenConfig{new QQmlPropertyMap{this}} @@ -183,6 +192,11 @@ QCoro::Task WallpaperPlugin::setHomescreenWallpaper(const QString &path) qWarning() << "Failed to set wallpaper for screen" << screen << ":" << reply.error(); } } + + // Keep lockscreen wallpaper aligned with homescreen wallpaper selections. + if (!path.isEmpty()) { + setLockscreenWallpaper(path); + } } void WallpaperPlugin::setLockscreenWallpaper(const QString &path) @@ -256,6 +270,14 @@ QCoro::Task WallpaperPlugin::loadHomescreenSettings() // parse image configuration if (m_homescreenWallpaperPlugin == QStringLiteral("org.kde.image")) { m_homescreenWallpaperPath = map["Image"].toString(); + + // One-time migration for stale lockscreen wallpaper defaults. + const bool lockscreenUnset = m_lockscreenWallpaperPlugin.isEmpty() || m_lockscreenWallpaperPath.isEmpty(); + const bool lockscreenLegacyNext = + m_lockscreenWallpaperPlugin == QStringLiteral("org.kde.image") && isLegacyNextWallpaperPath(m_lockscreenWallpaperPath); + if (!m_homescreenWallpaperPath.isEmpty() && m_lockscreenWallpaperPath != m_homescreenWallpaperPath && (lockscreenUnset || lockscreenLegacyNext)) { + setLockscreenWallpaper(m_homescreenWallpaperPath); + } } Q_EMIT homescreenConfigurationChanged();