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."