units: add graphical-session-pre.target user unit (#3848)
authorMartin Pitt <martin.pitt@ubuntu.com>
Tue, 2 Aug 2016 12:56:45 +0000 (14:56 +0200)
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Tue, 2 Aug 2016 12:56:45 +0000 (08:56 -0400)
This complements graphical-session.target for services which set up the
environment (e. g. dbus-update-activation-environment) and need to run before
the actual graphical session.

Makefile.am
man/systemd.special.xml
units/user/graphical-session-pre.target [new file with mode: 0644]

index 7dd021b..763b162 100644 (file)
@@ -574,7 +574,8 @@ dist_userunit_DATA = \
        units/user/basic.target \
        units/user/default.target \
        units/user/exit.target \
-       units/user/graphical-session.target
+       units/user/graphical-session.target \
+       units/user/graphical-session-pre.target
 
 nodist_userunit_DATA = \
        units/user/systemd-exit.service
index 1814259..d977298 100644 (file)
@@ -927,6 +927,19 @@ PartOf=graphical-session.target
         </programlisting>
       </example>
     </refsect2>
+
+    <refsect2>
+      <title>graphical-session-pre.target</title>
+
+      <para>This target contains services which set up the environment or
+      global configuration of a graphical session, such as SSH/GPG agents
+      (which need to export an environment variable into all desktop processes)
+      or migration of obsolete d-conf keys after an OS upgrade (which needs to
+      happen before starting any process that might use them). This target must
+      be started before starting a graphical session
+      like <filename>gnome-session.target</filename>.</para>
+    </refsect2>
+
   </refsect1>
 
   <refsect1>
diff --git a/units/user/graphical-session-pre.target b/units/user/graphical-session-pre.target
new file mode 100644 (file)
index 0000000..86d15af
--- /dev/null
@@ -0,0 +1,14 @@
+#  This file is part of systemd.
+#
+#  systemd is free software; you can redistribute it and/or modify it
+#  under the terms of the GNU Lesser General Public License as published by
+#  the Free Software Foundation; either version 2.1 of the License, or
+#  (at your option) any later version.
+
+[Unit]
+Description=Session services which should run early before the graphical session is brought up
+Documentation=man:systemd.special(7)
+Requires=basic.target
+Before=graphical-session.target
+RefuseManualStart=yes
+StopWhenUnneeded=yes