Source: budgie-desktop
Version: 10.2.6-1
Severity: normal
User: d...@packages.debian.org
Usertags: dbus-launch default-dbus-session-bus

As described in <https://lists.debian.org/debian-devel/2016/08/msg00554.html>
I'm part way through a mass-bug-filing to reduce how much dbus-launch is used
in Debian.

As a result of debian/patches/nm-applet.diff, budgie-desktop currently
wraps nm-applet in dbus-launch, which (if successful) results in a new,
private session dbus-daemon being run by nm-applet, for as long as
nm-applet is running. This is incorrect in a number of ways.

* There is no dependency on dbus-x11, which is the package containing the
  dbus-launch executable. If dbus-launch is not present, the desktop file
  will just fail to launch.

* dbus-launch is X11-specific legacy code, which does several things,
  all of them badly. If you genuinely want a private session dbus-daemon
  for the nm-applet, dbus-run-session is the right tool for the job.

* Having a private dbus-daemon for the nm-applet is very likely to be
  entirely the wrong thing to do. The purpose of the session dbus-daemon
  is to let processes communicate. Starting a new, private one of those
  creates "its own little world", with processes inside that world
  failing to communicate with processes outside it. If a process uses
  a D-Bus bus name as a mutex to prevent concurrent modification of
  its data files, this could potentially even lead to data loss.

* Your use of dbus-launch prevents nm-applet from picking up a
  pre-created "user bus" on systems that have the dbus-user-session
  package installed. This takes precedence over dbus-x11, if both
  are installed.

* If dbus-x11 is installed, then one of its responsibilities is to
  start a session bus for each X11 login session (via an Xsession.d
  snippet). A sysadmin can disable this, but if they do so, they cannot
  validly complain that D-Bus is broken.

* I think I can confidently say that nm-applet is run with a valid
  $DISPLAY, and uses either libdbus or GDBus for its D-Bus
  communications. This means that if dbus-x11 is installed, *and*
  there is no running session bus (for example because the sysadmin
  explicitly disabled it), *and* nm-applet uses the session bus,
  then nm-applet will automatically start a session bus via the
  "autolaunch" mechanism that it *will* share with the rest of
  the desktop environment.

In summary, whatever problem you are solving, debian/patches/nm-applet.diff
is the wrong answer. Please describe the problem that it is intended to
solve.

I am 95% confident that the correct answer is to remove that patch without
replacement. If I am wrong about that, then the binary package that
contains budgie-desktop-nm-applet.desktop should depend on dbus (>= 1.8),
and the patch should replace dbus-launch with dbus-run-session.

    S

Reply via email to