This bug is related to #1110124 and #1135377.
== Summary ==
Since xfdesktop4 4.20.2-2, the binary /usr/bin/xfdesktop has the path
/usr/share/images/desktop-base/default hardcoded as the default wallpaper
fallback via the --with-default-backdrop-filename build flag set in d/rules.
This breaks any Debian-based derivative that does not ship or depend on
desktop-base, causing xfdesktop to show a black/empty desktop with the
following errors at startup:
(xfdesktop): GLib-GObject-CRITICAL: g_object_get_qdata: assertion
'G_IS_OBJECT (object)' failed
(xfdesktop): GLib-GIO-CRITICAL: g_file_get_path: assertion
'G_IS_FILE (file)' failed
xfdesktop-Message: Failed to load image file '(null)': Error opening
file /usr/share/images/desktop-base/default: No such file or directory
The xfdesktop-settings dialog also shows:
"Unable to load images from folder (null)"
"Error opening directory '/usr/share/images/desktop-base': No such
file or directory"
Furthermore, even when the user has valid wallpaper configuration in
~/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-desktop.xml pointing to
/usr/share/backgrounds/xfce/xfce-x.svg, xfdesktop ignores this configuration
on real hardware (tested on AMD Ryzen 7 6800H with Radeon 680M and Intel N150)
and falls back to the hardcoded path. The issue does not reproduce on virtual
machines (VMware, VirtualBox, virt-manager).
Verification:
$ strings /usr/bin/xfdesktop | grep desktop-base
/usr/share/images/desktop-base/default
The path is compiled into the binary via d/rules:
--with-default-backdrop-filename=/usr/share/images/desktop-base/desktop-background
== Steps to reproduce ==
1. Install a Debian Testing-based system without desktop-base.
2. Install xfdesktop4 4.20.2-2.
3. Configure wallpaper to /usr/share/backgrounds/xfce/xfce-x.svg in xfconf.
4. Log out and log in on real (non-VM) hardware.
5. Observe black desktop and the errors above.
== Expected behaviour ==
xfdesktop should fall back to /usr/share/backgrounds/xfce/xfce-x.svg
(the upstream XFCE default) when desktop-base is not installed, or should
respect update-alternatives for desktop-background as documented.
== Suggested fix ==
Either:
a) Change d/rules to use
--with-default-backdrop-filename=/usr/share/backgrounds/xfce/xfce-x.svg
when desktop-base is not a dependency, or
b) Make the build-time default conditional on the presence of desktop-base, or
c) Use update-alternatives properly so derivatives can register their own
default wallpaper path, as described in bug #1110124.