Package: xfdesktop4
Version: 4.20.2-2
Severity: normal
Tags: patch
X-Debbugs-Cc: [email protected]

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.

-- System information --
Debian Testing (forky)
xfdesktop4 4.20.2-2
xfce4 4.20
Kernel: 7.0.9 (custom)
Hardware tested: AMD Ryzen 7 6800H / Radeon 680M, Intel N150

Reply via email to