=== modified file 'src/hd-desktop.c'
--- src/hd-desktop.c	2007-09-26 00:31:54 +0000
+++ src/hd-desktop.c	2007-09-26 01:20:45 +0000
@@ -69,6 +69,10 @@
 #define HD_DESKTOP_PING_TIMEOUT_BUTTON_OK_STRING     _( "qgn_bd_apkil_ok" )
 #define HD_DESKTOP_PING_TIMEOUT_BUTTON_CANCEL_STRING _( "qgn_bd_apkil_cancel" )
 
+#define HILDON_DESKTOP_GCONF_PATH "/desktop/hildon"
+#define MARQUEE_KEY HILDON_DESKTOP_GCONF_PATH "/marquee/hide"
+
+
 typedef struct 
 {
   GtkWidget         *parent;
@@ -112,6 +116,8 @@
 #endif
 };
 
+static gboolean hide_marquee = FALSE;
+
 static void hd_desktop_load_containers (HDDesktop *desktop);
 
 static gboolean
@@ -211,6 +217,49 @@
   g_free (_text);
 }
 
+void
+hd_desktop_show_container(gchar *container_config_file, gboolean show) 
+{
+
+  HDDesktop* desktop = hd_desktop_get_singleton();
+  HDDesktopContainerInfo *info;
+    
+  info = g_hash_table_lookup (desktop->priv->containers, container_config_file);
+
+  if (info != NULL)
+    {
+      if (show) {
+        gtk_widget_show(info->container);
+      } else {
+        gtk_widget_hide(info->container);
+      }
+    }
+}
+
+static void 
+hide_show_marquee(HDWMEntryInfo *entry_info) 
+{
+  gboolean isDesktop = HD_WM_IS_DESKTOP(entry_info);
+  hd_desktop_show_container("marquee.conf", !isDesktop);
+  hd_desktop_show_container("statusbar.conf", !isDesktop);
+}
+
+static void
+hd_desktop_window_stack_change_cb(HDWM *hdwm, HDWMEntryInfo *entry_info)
+{
+  if (hide_marquee) {
+    hide_show_marquee(entry_info);
+  }
+}
+
+static void
+hd_desktop_window_added_cb(HDWM *hdwm, HDWMEntryInfo *entry_info)
+{
+  if (hide_marquee) {
+    hide_show_marquee(entry_info);
+  }
+}
+
 static void 
 hd_desktop_launch_banner_show (HDWM *hdwm, gpointer app, gpointer data)
 {
@@ -1497,7 +1546,12 @@
   desktop->priv = HD_DESKTOP_GET_PRIVATE (desktop);
 
   priv = desktop->priv;
-  
+
+  GConfClient *gconf_client = gconf_client_get_default ();
+  hide_marquee = gconf_client_get_bool (gconf_client,
+                                        MARQUEE_KEY,
+                                        NULL);
+
   user_conf_dir = g_build_filename (g_get_home_dir (), 
                                     HD_DESKTOP_CONFIG_USER_PATH, 
                                     NULL);
@@ -1578,6 +1632,16 @@
 		    "application-frozen-cancel",
 		    G_CALLBACK (hd_desktop_application_frozen_cancel),
 		    NULL);
+
+  g_signal_connect (hdwm,
+		    "entry_info_stack_changed",
+		    G_CALLBACK (hd_desktop_window_stack_change_cb),
+		    NULL);
+
+  g_signal_connect (hdwm,
+		    "entry_info_added",
+		    G_CALLBACK (hd_desktop_window_added_cb),
+		    NULL);
   
   desktop->priv->system_conf_monitor = NULL;
   desktop->priv->user_conf_monitor = NULL;
@@ -1662,14 +1726,18 @@
   g_type_class_add_private (g_object_class, sizeof (HDDesktopPrivate));
 }
 
-GObject *
-hd_desktop_new ()
+HDDesktop *
+hd_desktop_get_singleton (void)
 {
-  GObject *desktop = g_object_new (HD_TYPE_DESKTOP, NULL);
+  static HDDesktop *hd_desktop = NULL;
+  
+  if (!hd_desktop)
+    hd_desktop = g_object_new (HD_TYPE_DESKTOP, NULL);
 
-  return desktop;
+  return hd_desktop;
 }
 
+
 void
 hd_desktop_run (HDDesktop *desktop)
 {
@@ -1692,4 +1760,10 @@
                         desktop);
 
   g_free (user_conf_dir);
+
+  if (hide_marquee) {
+    hd_desktop_show_container("marquee.conf", FALSE);
+    hd_desktop_show_container("statusbar.conf", FALSE);
+  }
+
 }

=== modified file 'src/hd-desktop.h'
--- src/hd-desktop.h	2007-09-26 00:31:54 +0000
+++ src/hd-desktop.h	2007-08-29 15:49:58 +0000
@@ -52,6 +52,10 @@
   GObjectClass parent_class;
 };
 
+HDDesktop* hd_desktop_get_singleton (void);
+
+void hd_desktop_show_container (gchar *filename, gboolean state);
+
 GType     hd_desktop_get_type (void);
 
 GObject*  hd_desktop_new      (void);

=== modified file 'src/main.c'
--- src/main.c	2007-09-26 00:31:54 +0000
+++ src/main.c	2007-08-29 15:49:58 +0000
@@ -39,7 +39,6 @@
 
 int main (int argc, char **argv)
 {
-  GObject *desktop;
   gchar *gtkrc = NULL;
 
   g_thread_init (NULL);
@@ -77,9 +76,9 @@
 
   gnome_vfs_init ();
   
-  desktop = hd_desktop_new ();
+  HDDesktop *desktop = hd_desktop_get_singleton ();
 
-  hd_desktop_run (HD_DESKTOP (desktop));
+  hd_desktop_run (desktop);
 
   gtk_main ();
 

