diff -urNp xfce4-session-4.8.2.orig/settings/xfae-model.c xfce4-session-4.8.2/settings/xfae-model.c
--- xfce4-session-4.8.2.orig/settings/xfae-model.c	2011-09-13 18:17:10.000000000 +0200
+++ xfce4-session-4.8.2/settings/xfae-model.c	2011-11-13 17:45:34.000000000 +0100
@@ -73,6 +73,7 @@ static gboolean           xfae_model_ite
 static XfaeItem          *xfae_item_new               (const gchar        *relpath);
 static void               xfae_item_free              (XfaeItem           *item);
 static gboolean           xfae_item_is_removable      (XfaeItem           *item);
+static gboolean           xfae_item_is_compat         (XfaeItem           *item);
 
 
 
@@ -95,6 +96,7 @@ struct _XfaeItem
   GdkPixbuf *icon;
   gchar     *comment;
   gchar     *relpath;
+  gchar     **only_show_in;
   gboolean   hidden;
 };
 
@@ -287,7 +289,7 @@ xfae_model_get_value (GtkTreeModel *tree
 
     case XFAE_MODEL_COLUMN_ENABLED:
       g_value_init (value, G_TYPE_BOOLEAN);
-      g_value_set_boolean (value, !item->hidden);
+      g_value_set_boolean (value, !(item->hidden || xfae_item_is_compat (item)));
       break;
 
     case XFAE_MODEL_COLUMN_REMOVABLE:
@@ -401,7 +403,6 @@ xfae_item_new (const gchar *relpath)
   XfaeItem    *item = NULL;
   gboolean     skip = FALSE;
   XfceRc      *rc;
-  gchar      **only_show_in;
   gchar      **not_show_in;
   gchar      **args;
   gchar       *icon_name;
@@ -454,37 +455,37 @@ xfae_item_new (const gchar *relpath)
             item->comment = g_strdup (value);
 
           item->hidden = xfce_rc_read_bool_entry (rc, "Hidden", FALSE);
-        }
-
-      /* check the OnlyShowIn setting */
-      only_show_in = xfce_rc_read_list_entry (rc, "OnlyShowIn", ";");
-      if (G_UNLIKELY (only_show_in != NULL))
-        {
-          /* check if "Xfce" is specified */
-          for (m = 0, skip = TRUE; only_show_in[m] != NULL; ++m)
-            if (g_ascii_strcasecmp (only_show_in[m], "Xfce") == 0)
-              {
-                skip = FALSE;
-                break;
-              }
 
-          g_strfreev (only_show_in);
-        }
-      else
-        {
-          /* check the NotShowIn setting */
-          not_show_in = xfce_rc_read_list_entry (rc, "NotShowIn", ";");
-          if (G_UNLIKELY (not_show_in != NULL))
+          /* check the OnlyShowIn setting */
+          item->only_show_in = xfce_rc_read_list_entry (rc, "OnlyShowIn", ";");
+          if (G_UNLIKELY (item->only_show_in != NULL))
             {
-              /* check if "Xfce" is not specified */
-              for (m = 0; not_show_in[m] != NULL; ++m)
-                if (g_ascii_strcasecmp (not_show_in[m], "Xfce") == 0)
+              /* check if "Xfce", "GNOME", or "KDE" are specified */
+              for (m = 0, skip = TRUE; item->only_show_in[m] != NULL; ++m)
+                if ((g_ascii_strcasecmp (item->only_show_in[m], "Xfce") == 0) ||
+                    (g_ascii_strcasecmp (item->only_show_in[m], "GNOME") == 0) ||
+                    (g_ascii_strcasecmp (item->only_show_in[m], "KDE") == 0))
                   {
-                    skip = TRUE;
+                    skip = FALSE;
                     break;
                   }
+            }
+          else
+            {
+              /* check the NotShowIn setting */
+              not_show_in = xfce_rc_read_list_entry (rc, "NotShowIn", ";");
+              if (G_UNLIKELY (not_show_in != NULL))
+                {
+                  /* check if "Xfce" is not specified */
+                  for (m = 0; not_show_in[m] != NULL; ++m)
+                    if (g_ascii_strcasecmp (not_show_in[m], "Xfce") == 0)
+                      {
+                        skip = TRUE;
+                        break;
+                      }
 
-              g_strfreev (not_show_in);
+                  g_strfreev (not_show_in);
+                }
             }
         }
 
@@ -515,6 +516,7 @@ xfae_item_free (XfaeItem *item)
   g_free (item->relpath);
   g_free (item->comment);
   g_free (item->name);
+  g_strfreev (item->only_show_in);
   g_free (item);
 }
 
@@ -545,6 +547,32 @@ xfae_item_is_removable (XfaeItem *item)
 
 
 static gboolean
+xfae_item_is_compat (XfaeItem *item)
+{
+  gint m;
+  gboolean is_compat = FALSE;
+
+  if (item->only_show_in != NULL)
+    {
+      for (m = 0; item->only_show_in[m] != NULL; ++m)
+        {
+          if (g_ascii_strcasecmp (item->only_show_in[m], "Xfce") == 0)
+            {
+              is_compat = FALSE;
+              break;
+            }
+          else if ((g_ascii_strcasecmp (item->only_show_in[m], "GNOME") == 0) ||
+                   (g_ascii_strcasecmp (item->only_show_in[m], "KDE") == 0))
+            is_compat = TRUE;
+        }
+    }
+
+  return is_compat;
+}
+
+
+
+static gboolean
 xfae_item_remove (XfaeItem *item,
                   GError  **error)
 {
@@ -899,12 +927,26 @@ xfae_model_toggle (XfaeModel   *model,
       return FALSE;
     }
 
-  /* perform the toggle operation :-) */
-  item->hidden = !item->hidden;
+  if (xfae_item_is_compat (item))
+    {
+      guint len;
+
+      /* append "XFCE;" to "OnlyShowIn" */
+      len = g_strv_length (item->only_show_in) + 2;
+      item->only_show_in = g_realloc_n (item->only_show_in, (gsize) len, sizeof (gchar *));
+      item->only_show_in[len - 3] = g_strdup ("XFCE");
+      item->only_show_in[len - 2] = g_strdup (""); /* force trailing semicolon */
+      item->only_show_in[len - 1] = NULL;
+
+      item->hidden = FALSE;
+    }
+  else
+    item->hidden = !item->hidden;
 
   /* write the result */
   xfce_rc_set_group (rc, "Desktop Entry");
   xfce_rc_write_bool_entry (rc, "Hidden", item->hidden);
+  xfce_rc_write_list_entry (rc, "OnlyShowIn", item->only_show_in, ";");
   xfce_rc_close (rc);
 
   /* tell the view that we have most probably a new state */
diff -urNp xfce4-session-4.8.2.orig/xfce4-session/xfsm-compat-gnome.c xfce4-session-4.8.2/xfce4-session/xfsm-compat-gnome.c
--- xfce4-session-4.8.2.orig/xfce4-session/xfsm-compat-gnome.c	2011-09-13 18:17:17.000000000 +0200
+++ xfce4-session-4.8.2/xfce4-session/xfsm-compat-gnome.c	2011-11-13 17:32:37.000000000 +0100
@@ -294,7 +294,9 @@ xfsm_compat_gnome_startup (XfsmSplashScr
   if (G_UNLIKELY (gnome_compat_started))
     return;
 
+#if 0
   xfsm_compat_gnome_smproxy_startup ();
+#endif
 
   /* fire up the keyring daemon */
   if (G_LIKELY (splash != NULL))
@@ -342,6 +344,7 @@ xfsm_compat_gnome_shutdown (void)
     }
 #endif
 
+#if 0
   /* shutdown the GConf daemon */
   if (!g_spawn_command_line_sync ("gconftool-2 --shutdown", NULL,
                                   NULL, &status, &error))
@@ -357,6 +360,7 @@ xfsm_compat_gnome_shutdown (void)
     }
 
   xfsm_compat_gnome_smproxy_shutdown ();
+#endif
 
   gnome_compat_started = FALSE;
 }
diff -urNp xfce4-session-4.8.2.orig/xfce4-session/xfsm-startup.c xfce4-session-4.8.2/xfce4-session/xfsm-startup.c
--- xfce4-session-4.8.2.orig/xfce4-session/xfsm-startup.c	2011-09-13 18:17:17.000000000 +0200
+++ xfce4-session-4.8.2/xfce4-session/xfsm-startup.c	2011-11-13 17:32:37.000000000 +0100
@@ -352,9 +352,7 @@ xfsm_startup_autostart_xdg (XfsmManager
                * then "KDE" is specified. */
               for (m = 0, skip = TRUE; only_show_in[m] != NULL; ++m)
                 {
-                  if ((g_ascii_strcasecmp (only_show_in[m], "XFCE") == 0) ||
-                      (gnome && g_ascii_strcasecmp (only_show_in[m], "GNOME") == 0) ||
-                      (kde && g_ascii_strcasecmp (only_show_in[m], "KDE") == 0))
+                  if (g_ascii_strcasecmp (only_show_in[m], "XFCE") == 0)
                     {
                       skip = FALSE;
                       break;