https://bugs.kde.org/show_bug.cgi?id=506862

            Bug ID: 506862
           Summary: D-Bus: desktop.reloadConfig() does not visually update
                    wallpaper in Plasma 6
    Classification: Plasma
           Product: plasmashell
      Version First 6.4.2
       Reported In:
          Platform: Other
                OS: Linux
            Status: REPORTED
          Severity: normal
          Priority: NOR
         Component: Wallpaper images
          Assignee: [email protected]
          Reporter: [email protected]
  Target Milestone: 1.0

SUMMARY
D-Bus: desktop.reloadConfig() fails to trigger visual refresh for wallpaper
changes in Plasma 6 (Wayland)

STEPS TO REPRODUCE
1. On a multi-monitor system running Plasma 6 on Wayland, prepare two distinct
image files for testing.
2. Create and run the following shell script, which uses the official D-Bus API
to set a different wallpaper for each monitor. (Replace /path/to/image-1.png
and /path/to/image-2.png with absolute paths to your test images).

#!/bin/bash

# Paths to the two test wallpapers
LEFT_IMG_PATH="file:///path/to/image-1.png"
RIGHT_IMG_PATH="file:///path/to/image-2.png"

JS_CODE="
var allDesktops = desktops();

// --- Configure Monitor 0 ---
var leftDesktop = allDesktops[0];
leftDesktop.wallpaperPlugin = 'org.kde.image';
leftDesktop.currentConfig = { 'Image': '${LEFT_IMG_PATH}', 'FillMode': 2 };
leftDesktop.reloadConfig();

// --- Configure Monitor 1 ---
var rightDesktop = allDesktops[1];
rightDesktop.wallpaperPlugin = 'org.kde.image';
rightDesktop.currentConfig = { 'Image': '${RIGHT_IMG_PATH}', 'FillMode': 2 };
rightDesktop.reloadConfig();
"

qdbus org.kde.plasmashell /PlasmaShell org.kde.PlasmaShell.evaluateScript
"$JS_CODE"

3. After the script runs successfully, observe the desktop wallpapers.
4. To confirm the configuration was set correctly, manually run plasmashell
--replace & disown in a terminal.

OBSERVED RESULT

The script in step 2 executes without any errors. However, the desktop
wallpapers do not change visually.

After performing step 4 (plasmashell --replace), the new Plasma shell session
starts and correctly displays the new wallpapers that were set by the script.
This proves the D-Bus call successfully modified the configuration in memory,
but the live visual refresh failed to trigger.

EXPECTED RESULT

The desktop wallpapers should change instantly and non-disruptively upon
successful execution of the D-Bus script in step 2. The reloadConfig() method
should trigger an immediate visual update without requiring a full shell
restart.

SOFTWARE/OS VERSIONS
Linux/KDE Plasma:
Operating System: Garuda Linux x86_64
KDE Plasma Version: 6.4.2
KDE Frameworks Version: 6.15
Qt Version: 6.9.1
Kernel Version: 6.15.5-zen1-1-zen
Graphics Platform: Wayland

ADDITIONAL INFORMATION
This issue was observed on a multi-monitor setup (2x 3840x2160).
The system uses an NVIDIA GeForce RTX 4090 GPU, with the proprietary driver.
The core of the issue seems to be that desktop.reloadConfig() is not honored by
the running plasmashell process for the wallpaper component, even though the
configuration itself is successfully updated via D-Bus. This necessitates a
disruptive workaround (plasmashell --replace) to see any changes.

Full script below

#!/bin/bash

#==============================================================================
# SCRIPT CONFIGURATION
#==============================================================================
LEFT_MONITOR_INDEX=0
RIGHT_MONITOR_INDEX=1

SOURCE_DIR="/home/zeebie/Pictures/Wallpapers/Dual_4K"
USER_HOME="/home/zeebie"
#==============================================================================
# STATIC CONFIGURATION & SCRIPT LOGIC (Find a random 8k wallpaper and split it
in half to be two 4k images.)
#==============================================================================
TEMP_DIR="$USER_HOME/.local/share/wallpapers/temp_split"

# --- Main Logic ---
echo "--- Starting Spanned Slideshow ---"
mkdir -p "$TEMP_DIR"

WALLPAPER=$(find "$SOURCE_DIR" -type f \( -iname \*.jpg -o -iname \*.jpeg -o
-iname \*.png \) | shuf -n 1)
if [ -z "$WALLPAPER" ]; then echo "[ERROR] No images found. Exiting."; exit 1;
fi
echo "[INFO] Selected wallpaper: $WALLPAPER"
magick "$WALLPAPER" -crop 2x1@ +repage "$TEMP_DIR/split.png"

LEFT_IMG_PATH="file://${TEMP_DIR}/split-0.png"
RIGHT_IMG_PATH="file://${TEMP_DIR}/split-1.png"

echo "[INFO] Applying wallpapers via D-Bus ..."


JS_CODE="
var allDesktops = desktops();

// --- Configure the Left Monitor ---
var leftDesktop = allDesktops[${LEFT_MONITOR_INDEX}];
leftDesktop.wallpaperPlugin = 'org.kde.image';
leftDesktop.currentConfig = {
    'Image': '${LEFT_IMG_PATH}',
    'FillMode': 2
};
leftDesktop.reloadConfig();

// --- Configure the Right Monitor ---
var rightDesktop = allDesktops[${RIGHT_MONITOR_INDEX}];
rightDesktop.wallpaperPlugin = 'org.kde.image';
rightDesktop.currentConfig = {
    'Image': '${RIGHT_IMG_PATH}',
    'FillMode': 2
};
rightDesktop.reloadConfig();
"

qdbus org.kde.plasmashell /PlasmaShell org.kde.PlasmaShell.evaluateScript
"$JS_CODE"

if [ $? -eq 0 ]; then
    echo "[SUCCESS] D-Bus command executed without error."
else
    echo "[ERROR] D-Bus command failed."
fi
echo "------------------------------------"

echo "[WARNING] D-Bus refresh is not working. Forcing shell reload...
Disruptive..."
plasmashell --replace & disown

echo "[SUCCESS] Wallpaper update process completed."

-- 
You are receiving this mail because:
You are watching all bug changes.

Reply via email to