xfdesktop --next fails to set property when backdrop image is spanning screens
Issue Description
I use multiple monitors with my backdrop set to "Spanning Screens", and I change monitor layouts frequently. I noticed xfdesktop --next was not cycling backdrops when I had more than one one monitor active. So I ran xfdesktop from the terminal and saw it was throwing this error:
(xfdesktop:493037): xfconf-WARNING **: 00:52:51.638: Failed to set property "xfce4-desktop::/backdrop/screen0/monitorDP-0/workspace0/last-image": Operation was cancelled
At the same time, xfconf-query -c xfce4-desktop -m -v showed the following output with 3 image file attempts:
set: /backdrop/screen0/monitorDP-0/workspace0/last-image (/home/trash/Pictures/Wallpapers/relaxing-rooms/1614799531987.jpg)
set: /backdrop/screen0/monitorDP-0/workspace0/last-image (/home/trash/Pictures/Wallpapers/relaxing-rooms/1614799567340.jpg)
set: /backdrop/screen0/monitorDP-0/workspace0/last-image (/home/trash/Pictures/Wallpapers/relaxing-rooms/1614799603466.jpg)
Sometimes these had different monitors in the property path, sometimes they are the same monitor and I have not worked out why yet.
However, if I right-click on the desktop and use the GUI to select "Next Desktop", the backdrop successfully changes and xfconf-query -c xfce4-desktop -m -v shows the following output with just one image:
set: /backdrop/screen0/monitorDP-0/workspace0/last-image (/home/trash/Pictures/Wallpapers/relaxing-rooms/1614799567340.jpg)
I was able to get this behavior to go away by preventing xfdesktop --next from iterating through changes to all the monitors by inserting a break; after line 579 of xfdesktop-applications.c and compiling a test, but of course then the behavior is broken for non-spanning mode because it doesn't iterate through all the monitors. I started to hit a wall figuring out how to only iterate on the condition that the backdrop style is not spanning, and that may not even be the right place to fix the issue, so I am submitting this report.
Steps to Reproduce Issue
- Set up more than one monitor
- Use the desktop settings GUI to select a folder of wallpapers and set the style to "Spanning Screens"
- Optionally open a terminal emulator and run
xfdesktop -Q; xfdesktopin order to see the warning message prints (there is probably a cleaner way to do this) - Optionally open a terminal emulator and run
xfconf-query -c xfce4-desktop -m -vto observe parameter changes - Open a terminal emulator and run
xfdesktop --next
Expected Behavior
If I have the Spanning Screens style selected, I expect the one image will cycle to the next one when I run xfdesktop --next. If I have any other style selected, I expect the backdrop on each monitor will change when I run xfdesktop --next.
Additional Information
I use a monitor layout with overlapping monitors in my screen, although this issue is apparent with or without the overlappint monitors present. I use arandr to set monitor layouts rather the XFCE Display tool.
Here is a screen recording of the behavior. There are some screen artifacts at the beginning of the video because xfdesktop is not running yet, and there are some other artifacts in the recording off the edge of the monitors because the recording tool I used doesn't work well for capturing screens with missing space.
Environment & Versions
- OS distribution and version: Manjaro Linux 26.0.3
- Overall Xfce version: 4.20
- xfdesktop version (git hash if not a release): 4.20.1
- thunar version (if issue related to file/launcher icons):
- Windowing system (X11/Wayland): X11
- GTK Theme: Dracula
- Icon Theme: Dracula
- UI Scale Factor: 1