Index: /trunk/src/VBox/Additions/x11/VBoxClient/VBoxClient.h
===================================================================
--- /trunk/src/VBox/Additions/x11/VBoxClient/VBoxClient.h	(revision 24068)
+++ /trunk/src/VBox/Additions/x11/VBoxClient/VBoxClient.h	(revision 24069)
@@ -36,5 +36,5 @@
     virtual const char *getPidFilePath() = 0;
     /** Run the service main loop */
-    virtual int run() = 0;
+    virtual int run(bool fDaemonised = false) = 0;
     /** Clean up any global resources before we shut down hard */
     virtual void cleanup() = 0;
Index: /trunk/src/VBox/Additions/x11/VBoxClient/clipboard.cpp
===================================================================
--- /trunk/src/VBox/Additions/x11/VBoxClient/clipboard.cpp	(revision 24068)
+++ /trunk/src/VBox/Additions/x11/VBoxClient/clipboard.cpp	(revision 24069)
@@ -290,5 +290,5 @@
         return ".vboxclient-clipboard.pid";
     }
-    virtual int run()
+    virtual int run(bool fDaemonised /* = false */)
     {
         int rc = vboxClipboardConnect();
Index: /trunk/src/VBox/Additions/x11/VBoxClient/display.cpp
===================================================================
--- /trunk/src/VBox/Additions/x11/VBoxClient/display.cpp	(revision 24068)
+++ /trunk/src/VBox/Additions/x11/VBoxClient/display.cpp	(revision 24069)
@@ -104,4 +104,5 @@
     while (true)
         XNextEvent(pDisplay, &ev);
+    return 0;
 }
 
@@ -178,5 +179,5 @@
         return ".vboxclient-display.pid";
     }
-    virtual int run()
+    virtual int run(bool fDaemonised /* = false */)
     {
         int rc = initDisplay();
Index: /trunk/src/VBox/Additions/x11/VBoxClient/hostversion.cpp
===================================================================
--- /trunk/src/VBox/Additions/x11/VBoxClient/hostversion.cpp	(revision 24068)
+++ /trunk/src/VBox/Additions/x11/VBoxClient/hostversion.cpp	(revision 24069)
@@ -23,4 +23,5 @@
 #include <iprt/ldr.h>
 #include <iprt/string.h>
+#include <iprt/thread.h>
 
 #ifdef VBOX_WITH_DBUS
@@ -62,5 +63,5 @@
             if (conn == NULL)
             {
-                LogFlow(("Could not create D-BUS message!\n"));
+                Log(("Could not create D-BUS message!\n"));
                 rc = VERR_INVALID_HANDLE;
             }
@@ -98,6 +99,6 @@
             dbus_message_iter_append_basic(&iter,DBUS_TYPE_INT32,&msg_timeout);
 
-            /* @todo Send with waiting for a reply! */
-            if (dbus_connection_send(conn, msg, NULL))
+            DBusError err;
+            dbus_connection_send_with_reply_and_block(conn, msg, 30 * 1000, &err);
                 dbus_connection_flush(conn);
         }
@@ -113,8 +114,14 @@
     /** @todo Move this part in VbglR3 and just provide a callback for the platform-specific
               notification stuff, since this is very similar to the VBoxTray code. */
-    virtual int run()
+    virtual int run(bool fDaemonised /* = false */)
     {
         int rc;
         LogFlowFunc(("\n"));
+
+        /* Because we need desktop notifications to be displayed, wait
+         * some time to make the desktop environment load (as a work around). */
+        if (fDaemonised)
+            RTThreadSleep(30 * 1000 /* Wait 30 seconds */);
+
 # ifdef VBOX_WITH_DBUS
         rc = RTDBusLoadLib();
@@ -131,5 +138,5 @@
             rc = VbglR3GuestPropConnect(&uGuestPropSvcClientID);
             if (RT_FAILURE(rc))
-                LogFlow(("Cannot connect to guest property service! rc = %Rrc\n", rc));
+                Log(("Cannot connect to guest property service! rc = %Rrc\n", rc));
         }
 
@@ -154,4 +161,5 @@
                                                       "install option from the Devices menu.", pszGuestVersion, pszHostVersion);
                     rc = showNotify(szTitle, szMsg);
+                    LogRel(("VBoxClient: VirtualBox Guest Additions update available!"));
                     if (RT_FAILURE(rc))
                         Log(("VBoxClient: Could not show version notifier tooltip! rc = %d\n", rc));
Index: /trunk/src/VBox/Additions/x11/VBoxClient/main.cpp
===================================================================
--- /trunk/src/VBox/Additions/x11/VBoxClient/main.cpp	(revision 24068)
+++ /trunk/src/VBox/Additions/x11/VBoxClient/main.cpp	(revision 24069)
@@ -264,5 +264,5 @@
     /* Set an X11 I/O error handler, so that we can shutdown properly on fatal errors. */
     XSetIOErrorHandler(vboxClientXLibIOErrorHandler);
-    g_pService->run();
+    g_pService->run(fDaemonise);
     VBoxClient::CleanUp();
     return 1;  /* We should never get here. */
Index: /trunk/src/VBox/Additions/x11/VBoxClient/seamless.cpp
===================================================================
--- /trunk/src/VBox/Additions/x11/VBoxClient/seamless.cpp	(revision 24068)
+++ /trunk/src/VBox/Additions/x11/VBoxClient/seamless.cpp	(revision 24069)
@@ -36,5 +36,5 @@
         return ".vboxclient-seamless.pid";
     }
-    virtual int run()
+    virtual int run(bool fDaemonised /* = false */)
     {
         /* Initialise threading in X11 and in Xt. */
