#1006762 dbus: xfce4-session reports CRITICAL 'dbus-launch not found' xfdesktop does not start

Package:
xfce4-session
Source:
xfce4-session
Description:
Xfce4 Session Manager
Submitter:
Sam Lander
Date:
2022-03-04 17:42:03 UTC
Severity:
important
#1006762#5
Date:
2022-03-04 12:39:09 UTC
From:
To:
Dear Maintainer,

I am in testing, and found after the recent v1.14 into testing release
that xfdesktop did not start.
I reported it to xfdesktop, but I think it might be a dbus package
problem
https://gitlab.xfce.org/xfce/xfdesktop/-/issues/183

In short, my whereis dbus-launch returns nothing and xfce4-session says:

/etc/xdg# xfce4-session --help
... xfce4-session-CRITICAL **: 22:53:24.005: dbus-launch not found, the desktop will not work properly!

The doc for dbus-X11 (which I've not consciously installed, nor avoided) says:
This package contains the dbus-launch utility, which automatically launches one D-Bus session bus per X11 display per user. If
the dbus-user-session package is also installed, it takes precedence over this package.

... but dbus-launch is missing.

#1006762#10
Date:
2022-03-04 17:38:50 UTC
From:
To:
Control: reassign -1 xfce4-session
on dbus-x11. The dbus package is not responsible for ensuring that "larger"
packages like xfce4-session have the dependencies they need.

Older versions of xfce4-session had a Recommends on dbus-x11; newer versions
appear to have a Recommends on default-dbus-session-bus | dbus-session-bus
instead.

What is meant to happen in most desktop environments shipped in Debian is
that a dependency on default-dbus-session-bus | dbus-session-bus arranges
for some sort of D-Bus session bus to be provided by the operating system.
However, that dependency doesn't specify exactly how the D-Bus session
bus works, only that it works. It might be the "user bus" (dbus-daemon
as a `systemd --system` service), or it might be the older setup where
dbus-x11 provides /etc/X11/Xsession.d/75dbus_dbus-launch, which is
run during desktop environment startup, runs dbus-launch and you get a
dbus-daemon that way.

If the environment variable DBUS_SESSION_BUS_ADDRESS is set, or if a socket
$XDG_RUNTIME_DIR/bus exists and is owned by the user's uid, then
xfce4-session should accept that D-Bus has been set up by the operating
system, and not insist on running dbus-launch itself.

Or, failing that, if xfce4-session does insist on running dbus-launch
itself, then it needs to have the necessary dependency on dbus-x11 to
guarantee that dbus-launch exists.

The upgrade from dbus 1.12 to 1.14 should not affect how this works: in
both 1.12 and 1.14, the dbus-launch executable is part of the dbus-x11
package.

This is the "legacy-free" user bus setup, in which `dbus-daemon --session`
is run as a per-user service by `systemd --user`. It should be enough to
provide you with a working D-Bus session bus, as long as desktop components
don't second-guess it.

    smcv