--- xfce4-session/main.c.orig	2016-01-02 15:02:42.000000000 +0100
+++ xfce4-session/main.c	2016-01-02 15:04:23.000000000 +0100
@@ -243,8 +243,12 @@ main (int argc, char **argv)
   XfsmShutdown     *shutdown_helper;
   gboolean          succeed = TRUE;
 
+#if defined(__APPLE__) && defined(__MACH__)
+  /* dbus is being started by launchd */
+#else
   if (!xfsm_dbus_require_session (argc, argv))
     return EXIT_SUCCESS;
+#endif
 
   xfce_textdomain (GETTEXT_PACKAGE, PACKAGE_LOCALE_DIR, "UTF-8");
 
--- xfce4-session/xfsm-manager.c.orig	2015-02-28 17:28:00.000000000 +0100
+++ xfce4-session/xfsm-manager.c	2016-01-06 14:19:51.000000000 +0100
@@ -765,6 +765,7 @@
 #ifdef HAVE_OS_CYGWIN
   gchar *s;
 #endif
+  gchar *t;
 
   manager->compat_gnome = xfconf_channel_get_bool (channel, "/compat/LaunchGNOME", FALSE);
   manager->compat_kde = xfconf_channel_get_bool (channel, "/compat/LaunchKDE", FALSE);
@@ -780,6 +780,11 @@ xfsm_manager_load (XfsmManager   *manage
       *s = '#';
 #endif
 
+  /* rename a slash (/) to a hash (#) for launchd */
+  for (t = display_name; *t != '\0'; ++t)
+    if (*t == '/')
+      *t = '#';
+
   resource_name = g_strconcat ("sessions/xfce4-session-", display_name, NULL);
   manager->session_file  = xfce_resource_save_location (XFCE_RESOURCE_CACHE, resource_name, TRUE);
   g_free (resource_name);
