Index: gnome-settings-daemon-2.28.2/data/apps_gnome_settings_daemon_keybindings.schemas.in
===================================================================
--- gnome-settings-daemon-2.28.2.orig/data/apps_gnome_settings_daemon_keybindings.schemas.in
+++ gnome-settings-daemon-2.28.2/data/apps_gnome_settings_daemon_keybindings.schemas.in
@@ -270,5 +270,16 @@
             </locale>
         </schema>
 
+        <schema>
+            <key>/schemas/apps/gnome_settings_daemon/simulate_composited</key>
+            <applyto>/apps/gnome_settings_daemon/simulate_composited</applyto>
+            <type>bool</type>
+            <default>FALSE</default>
+            <locale name="C">
+                <short>Simulate Composited mode</short>
+                <long>Enabled simulate composited mode will support to show up translucent icon when no compoisted.</long>
+            </locale>
+       </schema>
+
     </schemalist>
 </gconfschemafile>
Index: gnome-settings-daemon-2.28.2/plugins/media-keys/gsd-media-keys-window.c
===================================================================
--- gnome-settings-daemon-2.28.2.orig/plugins/media-keys/gsd-media-keys-window.c
+++ gnome-settings-daemon-2.28.2/plugins/media-keys/gsd-media-keys-window.c
@@ -26,6 +26,7 @@
 #include <glib.h>
 #include <glib/gi18n.h>
 #include <gtk/gtk.h>
+#include <gconf/gconf-client.h>
 
 #include "gsd-media-keys-window.h"
 
@@ -36,6 +37,8 @@
 #define BG_ALPHA 0.50
 #define FG_ALPHA 1.00
 
+#define GCONF_MISC_DIR "/apps/gnome_settings_daemon"
+
 static void     gsd_media_keys_window_class_init (GsdMediaKeysWindowClass *klass);
 static void     gsd_media_keys_window_init       (GsdMediaKeysWindow      *fade);
 
@@ -56,6 +59,9 @@ struct GsdMediaKeysWindowPrivate
 
         GtkImage                *image;
         GtkWidget               *progress;
+
+        /* translucent window stuff */
+        gboolean                 simulate_composited;
 };
 
 G_DEFINE_TYPE (GsdMediaKeysWindow, gsd_media_keys_window, GTK_TYPE_WINDOW)
@@ -96,6 +102,14 @@ hide_timeout (GsdMediaKeysWindow *window
                 window->priv->fade_timeout_id = g_timeout_add (FADE_TIMEOUT,
                                                                (GSourceFunc) fade_timeout,
                                                                window);
+         } else if (window->priv->simulate_composited) {
+		if (GTK_WIDGET_VISIBLE (window)) {
+			gtk_widget_hide (GTK_WIDGET (window));
+			gdk_window_invalidate_rect (GTK_WIDGET (window)->window, NULL, FALSE);
+			while(gtk_events_pending())
+				gtk_main_iteration();
+			g_usleep (50000);
+		}
         } else {
                 gtk_widget_hide (GTK_WIDGET (window));
         }
@@ -139,7 +153,19 @@ update_window (GsdMediaKeysWindow *windo
         remove_hide_timeout (window);
         add_hide_timeout (window);
 
-        if (window->priv->is_composited) {
+	if (!window->priv->is_composited && window->priv->simulate_composited) {
+		if (GTK_WIDGET_VISIBLE (window)) {
+			gtk_widget_hide (GTK_WIDGET (window));
+			gdk_window_invalidate_rect (GTK_WIDGET (window)->window, NULL, FALSE);
+			while(gtk_events_pending()) {
+				gtk_main_iteration();
+			}
+			g_usleep (50000);
+		}
+	}
+
+        if (window->priv->is_composited
+	    || window->priv->simulate_composited) {
                 gtk_widget_queue_draw (GTK_WIDGET (window));
         }
 }
@@ -162,6 +188,13 @@ static void
 window_set_icon_name (GsdMediaKeysWindow *window,
                       const char         *name)
 {
+        g_return_if_fail (name != NULL);
+
+        if (g_strcmp0 (window->priv->icon_name, name) != 0) {
+                g_free (window->priv->icon_name);
+                window->priv->icon_name = g_strdup (name);
+	}
+
         if (window->priv->image == NULL)
                 return;
 
@@ -815,9 +848,68 @@ draw_action (GsdMediaKeysWindow *window,
 }
 
 static gboolean
-on_expose_event (GtkWidget          *widget,
-                 GdkEventExpose     *event,
-                 GsdMediaKeysWindow *window)
+on_expose_event_simulate_composited (GtkWidget          *widget,
+                 	       	     GdkEventExpose     *event,
+                 	       	     GsdMediaKeysWindow *window)
+{
+        gint x, y;
+        GdkWindow *root_window;
+        GdkPixbuf *image;
+        GdkPixbuf *bg_pf;
+        GdkBitmap *mask;
+        int window_width;
+        int window_height;
+        double icon_box_width;
+
+	gtk_window_get_size (GTK_WINDOW (window), &window_width, &window_height);
+	icon_box_width = round (window_width * 0.65);
+
+	image = load_pixbuf (window, window->priv->icon_name, icon_box_width);
+        if (!GDK_IS_PIXBUF (image))
+                return FALSE;
+
+        gdk_pixbuf_render_pixmap_and_mask (image, NULL, &mask, 1);
+        gdk_window_shape_combine_mask (gtk_widget_get_window (widget), mask, 0, 0);
+        g_object_unref(G_OBJECT(mask));
+
+	root_window = gtk_widget_get_root_window (widget);
+        gtk_window_get_position (GTK_WINDOW (window), &x, &y);
+
+	bg_pf = gdk_pixbuf_get_from_drawable (NULL,
+                        GDK_DRAWABLE (root_window),
+                        gdk_drawable_get_colormap (GDK_DRAWABLE (root_window)),
+                        x, y,
+                        0, 0,
+                        widget->allocation.width, widget->allocation.height);
+
+        gdk_draw_pixbuf (GDK_DRAWABLE (gtk_widget_get_window (widget)),
+                        widget->style->bg_gc[GTK_WIDGET_STATE (widget)],
+                        bg_pf,
+                        0, 0,
+                        0, 0,
+                        -1, -1,
+                        GDK_RGB_DITHER_NONE,
+                        0, 0);
+
+	gdk_draw_pixbuf (GDK_DRAWABLE (gtk_widget_get_window (widget)),
+                        widget->style->bg_gc[GTK_WIDGET_STATE (widget)],
+                        image,
+                        0, 0,
+                        0, 0,
+                        -1, -1,
+                        GDK_RGB_DITHER_NONE,
+                        0, 0);
+
+	g_object_unref (G_OBJECT (image));
+	g_object_unref (G_OBJECT (bg_pf));
+
+	return FALSE;
+}
+
+static gboolean
+on_expose_event_is_composited (GtkWidget          *widget,
+                 	       GdkEventExpose     *event,
+                 	       GsdMediaKeysWindow *window)
 {
         cairo_t         *context;
         cairo_t         *cr;
@@ -888,6 +980,17 @@ on_expose_event (GtkWidget          *wid
         return FALSE;
 }
 
+static gboolean
+on_expose_event (GtkWidget          *widget,
+                 GdkEventExpose     *event,
+                 GsdMediaKeysWindow *window)
+{
+	if (!window->priv->is_composited && window->priv->simulate_composited)
+		return on_expose_event_simulate_composited (widget, event, window);
+	else
+		return on_expose_event_is_composited (widget, event, window);
+}
+
 static void
 gsd_media_keys_window_real_show (GtkWidget *widget)
 {
@@ -971,6 +1074,8 @@ static void
 gsd_media_keys_window_init (GsdMediaKeysWindow *window)
 {
         GdkScreen *screen;
+        GConfClient *conf_client;
+        GError *error;
 
         window->priv = GSD_MEDIA_KEYS_WINDOW_GET_PRIVATE (window);
 
@@ -978,7 +1083,22 @@ gsd_media_keys_window_init (GsdMediaKeys
 
         window->priv->is_composited = gdk_screen_is_composited (screen);
 
-        if (window->priv->is_composited) {
+        error = NULL;
+        conf_client = gconf_client_get_default ();
+        window->priv->simulate_composited = gconf_client_get_bool (conf_client,
+                                                        GCONF_MISC_DIR "/simulate_composited",
+                                                        &error);
+        if (error) {
+                window->priv->simulate_composited = FALSE;
+                g_error_free (error);
+         }
+
+         if (conf_client) {
+                 g_object_unref (conf_client);
+                 conf_client = NULL;
+         }
+
+        if (window->priv->is_composited || window->priv->simulate_composited) {
                 gdouble scalew, scaleh, scale;
                 gint size;
 
@@ -995,6 +1115,9 @@ gsd_media_keys_window_init (GsdMediaKeys
                 g_signal_connect (window, "expose-event", G_CALLBACK (on_expose_event), window);
 
                 window->priv->fade_out_alpha = 1.0;
+
+		if (window->priv->simulate_composited)
+			window->priv->icon_name = g_strdup("audio-volume-high");
         } else {
                 GtkBuilder *builder;
                 gchar *objects[] = {"acme_frame", NULL};
Index: gnome-settings-daemon-2.28.2/plugins/media-keys/gsd-media-keys-manager.c
===================================================================
--- gnome-settings-daemon-2.28.2.orig/plugins/media-keys/gsd-media-keys-manager.c
+++ gnome-settings-daemon-2.28.2/plugins/media-keys/gsd-media-keys-manager.c
@@ -106,6 +106,8 @@ struct GsdMediaKeysManagerPrivate
 
         DBusGConnection *connection;
         guint            notify[HANDLED_KEYS];
+
+        gboolean         simulate_composited;
 };
 
 enum {
@@ -272,10 +274,20 @@ do_sleep_action (char *cmd1,
 static void
 dialog_init (GsdMediaKeysManager *manager)
 {
+         gboolean simulate_composited;
+         GError *error = NULL;
+
+        simulate_composited = gconf_client_get_bool (manager->priv->conf_client,
+                                                GCONF_MISC_DIR "/simulate_composited",
+                                                &error);
+
         if (manager->priv->dialog != NULL
-            && !gsd_media_keys_window_is_valid (GSD_MEDIA_KEYS_WINDOW (manager->priv->dialog))) {
+            && (!gsd_media_keys_window_is_valid (GSD_MEDIA_KEYS_WINDOW (manager->priv->dialog))
+            || manager->priv->simulate_composited != simulate_composited)) {
+
                 gtk_widget_destroy (manager->priv->dialog);
                 manager->priv->dialog = NULL;
+                manager->priv->simulate_composited = simulate_composited;
         }
 
         if (manager->priv->dialog == NULL) {
