[systemd-devel] mate desktop user service file

arnaud gaboury arnaud.gaboury at gmail.com
Thu Dec 4 00:56:47 PST 2014

> mate-settings-daemon might expect to be run from within an X-session.
> These errors look like DISPLAY= isn't set, which is reasonable because
> systemd starts programs from a clean environment.

As mentioned in my post, $DISPLAY is correctly set and is in systemctl
environment. The command is run inside the X session

After more tests, I realized two variables were missing:
In an effort to group runtime variables in one place, I set
So adding Environment=XAUTHORITY=/run/user/1000/Xauthority solved this issue.

For reasons I ignore (far from being a dbus expert), the
$DBUS_SESSION_BUS_ADDRESS as returned by the
$systemctl --user show-environment did not work for mate-settings-daemon.
Instead, mate is looking for this file to connect to dbus :
(machine.id-display). This file has the following content:
So adding EnvironmentFile=%h/.dbus/session-bus/77f348a2b3fb429b85a5de751ea9175a-0
solved the issue.

I am now with this service file:


Description=Mate settings daemon



it works and does what I am expecting (mate-settings are started
without any mate session being started).

gabx at hortensia ➤➤ ~ % systemctl --user status mate-settings-daemon
● mate-settings-daemon.service - Mate settings daemon
   Loaded: loaded
   Active: active (running) since Thu 2014-12-04 09:34:39 CET; 9min ago
 Main PID: 5664 (mate-settings-d)
   CGroup: /user.slice/user-1000.slice/user at 1000.service/mate-settings-daemon.service
           └─5664 /usr/lib/mate-settings-daemon/mate-settings-daemon

> Anyway, you really should talk to the mate developers to ask them
It is done, but still waiting for any hint...

Now my new questions:

It seems to me my setting is a dirty hack. I can't understand the
content of ~/.dbus/session-bus/77f348a2b3fb429b85a5de751ea9175a-0.

$ myps dbus
154:gabx      1424     1  0 Nov29 ?        00:00:00 dbus-launch
--autolaunch=77f348a2b3fb429b85a5de751ea9175a --binary-syntax

Why this autolaunch ?
Why is the DBUS_SESSION_BUS_ADDRESS in this file set to
/tmp/dbus-jszhQsZmjR,guid=be0e590886758c696ffc70175458d736 when
$systemctl --user show-environment returns
DBUS_SESSION_BUS_ADDRESS=/run/user/1000/dbus/user_bus_socket ?
I am left with two adresses, which sounds to me confusing and weird.

Why is mate-settings-daemon listening to the adress in
~/.dbus/session-bus/77f348a2b3fb429b85a5de751ea9175a-0 and not to the
one provided by systemctl ?

Even if my setup works, I would like to understand this story of two
dbus seesion adresses. Thank you for any explanation to light my


More information about the systemd-devel mailing list