diff --git a/configure.ac b/configure.ac
index 74aaeb8..bf012da 100644
--- a/configure.ac
+++ b/configure.ac
@@ -46,6 +46,7 @@ LIBSOUP_REQS=2.26.0
 GUDEV_REQS=143
 LIBMTP_REQS=0.3.0
 PYGOBJECT_REQUIRED=2.15.4
+APPINDICATOR_REQS=0.0.13
 
 AC_MSG_CHECKING([for GNU extension fwrite_unlocked])
 AC_LINK_IFELSE(
@@ -314,6 +315,29 @@ if test x$enable_libnotify = xyes ; then
     AC_SUBST(NOTIFY_LIBS)
 fi
 
+dnl application indicator
+AC_ARG_ENABLE([appindicator],
+	      AS_HELP_STRING([--enable-appindicator[=@<:@no/auto/yes@:>@]],
+			     [Build support for application indicators]),
+	      [enable_appindicator=$enableval],
+	      [enable_appindicator="auto"])
+
+if test x$enable_appindicator = xauto ; then
+    PKG_CHECK_EXISTS([appindicator-0.1 >= $APPINDICATOR_REQS],
+		     [enable_appindicator="yes"],
+		     [enable_appindicator="no"])
+fi
+
+if test x$enable_appindicator = xyes ; then
+    PKG_CHECK_MODULES(APP_INDICATOR,
+		      [appindicator-0.1 >= $APPINDICATOR_REQS],
+		      AC_DEFINE(HAVE_APP_INDICATOR, 1, [Have AppIndicator]))
+fi
+AM_CONDITIONAL(HAVE_APP_INDICATOR, test x"$enable_appindicator" = xyes)
+
+AC_SUBST(APP_INDICATOR_CFLAGS)
+AC_SUBST(APP_INDICATOR_LIBS)
+
 dnl daap support
 if test "x$enable_daap" != "xno"; then
 	if test x"$have_mdns" = xno; then
@@ -949,4 +973,10 @@ else
 	AC_MSG_NOTICE([   iTunes detection browser plugin (for podcasts) disabled])
 fi
 
+if test "x$enable_appindicator" != xno ; then
+        AC_MSG_NOTICE([** Application indicators enabled])
+else
+        AC_MSG_NOTICE([   Application indicators not enabled.])
+fi
+
 AC_MSG_NOTICE([End options])
diff --git a/plugins/status-icon/Makefile.am b/plugins/status-icon/Makefile.am
index f8265fc..df75b93 100644
--- a/plugins/status-icon/Makefile.am
+++ b/plugins/status-icon/Makefile.am
@@ -4,8 +4,15 @@ plugindir = $(PLUGINDIR)/status-icon
 plugin_LTLIBRARIES = libstatus-icon.la
 
 ICON_IMPL_FILES = \
-	rb-tray-icon-gtk.h 				\
+	rb-tray-icon-gtk.h
+
+if HAVE_APP_INDICATOR
+ICON_IMPL_FILES += \
+	rb-indicator.c
+else
+ICON_IMPL_FILES += \
 	rb-tray-icon-gtk.c
+endif
 
 libstatus_icon_la_SOURCES = \
 	rb-status-icon-plugin.h				\
@@ -20,6 +27,7 @@ libstatus_icon_la_LIBTOOLFLAGS = --tag=disable-static
 libstatus_icon_la_LIBADD = 				\
 	$(top_builddir)/shell/librhythmbox-core.la	\
 	$(NOTIFY_LIBS)					\
+	$(APP_INDICATOR_LIBS)				\
 	$(NULL)
 
 INCLUDES = 						\
@@ -36,6 +44,7 @@ INCLUDES = 						\
 	-DSHARE_DIR=\"$(pkgdatadir)\"                   \
 	-DDATADIR=\""$(datadir)"\"			\
 	$(RHYTHMBOX_CFLAGS)				\
+	$(APP_INDICATOR_CFLAGS)				\
 	-D_XOPEN_SOURCE -D_BSD_SOURCE
 
 uixmldir = $(plugindir)
diff --git a/plugins/status-icon/rb-indicator.c b/plugins/status-icon/rb-indicator.c
new file mode 100644
index 0000000..134a3c7
--- /dev/null
+++ b/plugins/status-icon/rb-indicator.c
@@ -0,0 +1,279 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*-
+ *
+ *  Copyright (C) 2003,2004 Colin Walters <walters@redhat.com>
+ *  Copyright (C) 2009 Canonical Ltd.
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  The Rhythmbox authors hereby grant permission for non-GPL compatible
+ *  GStreamer plugins to be used and distributed together with GStreamer
+ *  and Rhythmbox. This permission is above and beyond the permissions granted
+ *  by the GPL license by which Rhythmbox is covered. If you modify this code
+ *  you may extend this exception to your version of the code, but you are not
+ *  obligated to do so. If you do not wish to do so, delete this exception
+ *  statement from your version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA.
+ *
+ */
+
+#include <config.h>
+
+#include <unistd.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include <glib/gi18n.h>
+#include <gtk/gtk.h>
+
+#include <libappindicator/app-indicator.h>
+
+#include "rb-tray-icon-gtk.h"
+#include "rb-stock-icons.h"
+#include "rb-debug.h"
+#include "rb-shell-player.h"
+#include "rb-util.h"
+
+
+static void rb_tray_icon_class_init            (RBTrayIconClass *klass);
+static void rb_tray_icon_init                  (RBTrayIcon      *indicator);
+static void rb_tray_icon_constructed           (GObject         *object);
+static void rb_tray_icon_dispose               (GObject         *object);
+static void rb_tray_icon_set_property          (GObject         *object,
+						guint            prop_id,
+						const GValue    *value,
+						GParamSpec      *pspec);
+static void rb_tray_icon_get_property          (GObject         *object,
+						guint            prop_id,
+						GValue          *value,
+						GParamSpec      *pspec);
+static void rb_tray_icon_playing_changed_cb    (RBShellPlayer   *player,
+						gboolean         playing,
+						RBTrayIcon      *indicator);
+
+struct _RBTrayIconPrivate
+{
+	RBStatusIconPlugin *plugin;
+	AppIndicator       *indicator;
+	RBShellPlayer      *shell_player;
+};
+
+enum
+{
+	PROP_0,
+	PROP_PLUGIN,
+	PROP_SHELL_PLAYER
+};
+
+enum
+{
+	LAST_SIGNAL,
+};
+
+G_DEFINE_TYPE (RBTrayIcon, rb_tray_icon, G_TYPE_OBJECT)
+
+static void
+rb_tray_icon_class_init (RBTrayIconClass *klass)
+{
+	GObjectClass *object_class = G_OBJECT_CLASS (klass);
+
+	object_class->dispose     = rb_tray_icon_dispose;
+	object_class->constructed = rb_tray_icon_constructed;
+
+	object_class->set_property = rb_tray_icon_set_property;
+	object_class->get_property = rb_tray_icon_get_property;
+
+	g_object_class_install_property (object_class,
+					 PROP_PLUGIN,
+					 g_param_spec_object ("plugin",
+							      "RBStatusIconPlugin",
+							      "RBStatusIconPlugin object",
+							      RB_TYPE_STATUS_ICON_PLUGIN,
+							      G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
+	g_object_class_install_property (object_class,
+					 PROP_SHELL_PLAYER,
+					 g_param_spec_object ("shell-player",
+							      "RBShellPlayer",
+							      "RBShellPlayer object",
+							      RB_TYPE_SHELL_PLAYER,
+							      G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
+
+	g_type_class_add_private (klass, sizeof (RBTrayIconPrivate));
+}
+
+static void
+rb_tray_icon_init (RBTrayIcon *indicator)
+{
+	indicator->priv = G_TYPE_INSTANCE_GET_PRIVATE ((indicator), RB_TYPE_TRAY_ICON, RBTrayIconPrivate);
+
+	indicator->priv->indicator = app_indicator_new_with_path ("rhythmbox",
+								  RB_STOCK_TRAY_ICON_NOT_PLAYING,
+								  APP_INDICATOR_CATEGORY_APPLICATION_STATUS,
+								  SHARE_DIR G_DIR_SEPARATOR_S "icons");
+	app_indicator_set_status (indicator->priv->indicator,
+				  APP_INDICATOR_STATUS_PASSIVE);
+}
+
+static void
+rb_tray_icon_constructed (GObject *object)
+{
+	RBTrayIcon *indicator;
+	GtkWidget *menu;
+
+	RB_CHAIN_GOBJECT_METHOD (rb_tray_icon_parent_class, constructed, object);
+	indicator = RB_TRAY_ICON (object);
+
+	menu = rb_status_icon_get_popup (indicator->priv->plugin);
+	app_indicator_set_menu (indicator->priv->indicator,
+                                GTK_MENU (menu));
+
+	g_signal_connect_object (indicator->priv->shell_player,
+				 "playing-changed",
+				 G_CALLBACK (rb_tray_icon_playing_changed_cb),
+				 indicator, 0);
+}
+
+static void
+rb_tray_icon_dispose (GObject *object)
+{
+	RBTrayIcon *indicator;
+
+	g_return_if_fail (object != NULL);
+	g_return_if_fail (RB_IS_TRAY_ICON (object));
+
+	indicator = RB_TRAY_ICON (object);
+
+	g_return_if_fail (indicator->priv != NULL);
+
+	if (indicator->priv->indicator != NULL) {
+		g_object_unref (indicator->priv->indicator);
+		indicator->priv->indicator = NULL;
+	}
+
+	G_OBJECT_CLASS (rb_tray_icon_parent_class)->dispose (object);
+}
+
+static void
+rb_tray_icon_playing_changed_cb (RBShellPlayer *player, gboolean playing, RBTrayIcon *indicator)
+{
+	const char *icon_name;
+
+	icon_name = playing ? RB_STOCK_TRAY_ICON_PLAYING : RB_STOCK_TRAY_ICON_NOT_PLAYING;
+	app_indicator_set_icon (indicator->priv->indicator, icon_name);
+}
+
+static void
+rb_tray_icon_set_property (GObject *object,
+			   guint prop_id,
+			   const GValue *value,
+			   GParamSpec *pspec)
+{
+	RBTrayIcon *indicator = RB_TRAY_ICON (object);
+
+	switch (prop_id)
+	{
+	case PROP_SHELL_PLAYER:
+		indicator->priv->shell_player = g_value_get_object (value);
+		break;
+	case PROP_PLUGIN:
+		indicator->priv->plugin = g_value_get_object (value);
+		break;
+	default:
+		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+		break;
+	}
+}
+
+static void
+rb_tray_icon_get_property (GObject *object,
+			      guint prop_id,
+			      GValue *value,
+			      GParamSpec *pspec)
+{
+	RBTrayIcon *indicator = RB_TRAY_ICON (object);
+
+	switch (prop_id)
+	{
+	case PROP_SHELL_PLAYER:
+		g_value_set_object (value, indicator->priv->shell_player);
+		break;
+	case PROP_PLUGIN:
+		g_value_set_object (value, indicator->priv->plugin);
+		break;
+	default:
+		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+		break;
+	}
+}
+
+
+RBTrayIcon *
+rb_tray_icon_new (RBStatusIconPlugin *plugin,
+		  RBShellPlayer      *shell_player)
+{
+	return g_object_new (RB_TYPE_TRAY_ICON,
+			     "plugin", plugin,
+			     "shell-player", shell_player,
+			     NULL);
+}
+
+
+/**
+ * rb_tray_icon_get_geom:
+ * @icon: the #RBTrayIcon
+ * @x: returns the x position of the tray icon
+ * @y: returns the y position of the tray icon
+ * @width: returns the width of the tray icon
+ * @height: returns the height of the tray icon
+ *
+ * Retrieves the current position and size of the tray icon.
+ */
+void
+rb_tray_icon_get_geom (RBTrayIcon *indicator, int *x, int *y, int *width, int *height)
+{
+	*x = 0;
+	*y = 0;
+	*width = 0;
+	*height = 0;
+}
+
+void
+rb_tray_icon_trigger_tooltip_query (RBTrayIcon *indicator)
+{
+}
+
+
+gboolean
+rb_tray_icon_is_embedded (RBTrayIcon *indicator)
+{
+        return FALSE;
+}
+
+#ifdef HAVE_NOTIFY
+void
+rb_tray_icon_attach_notification (RBTrayIcon *icon, NotifyNotification *notification)
+{
+}
+#endif
+
+void
+rb_tray_icon_set_visible (RBTrayIcon *indicator, gboolean visible)
+{
+	app_indicator_set_status (indicator->priv->indicator,
+				  visible ? APP_INDICATOR_STATUS_ACTIVE : APP_INDICATOR_STATUS_PASSIVE);
+}
+
+void
+rb_tray_icon_menu_popup (RBTrayIcon *icon, GtkWidget *popup, gint button)
+{
+}
diff --git a/plugins/status-icon/rb-status-icon-plugin.c b/plugins/status-icon/rb-status-icon-plugin.c
index 41c59be..70da8f3 100644
--- a/plugins/status-icon/rb-status-icon-plugin.c
+++ b/plugins/status-icon/rb-status-icon-plugin.c
@@ -107,6 +107,9 @@ struct _RBStatusIconPluginPrivate
 	/* current playing data */
 	char *current_title;
 	char *current_album_and_artist;	/* from _album_ by _artist_ */
+#ifdef HAVE_APP_INDICATOR
+	char *current_artist;
+#endif
 
 	/* tooltip data */
 	char *tooltip_markup;
@@ -139,12 +142,17 @@ static GtkActionEntry rb_status_icon_plugin_actions [] =
 {
 	{ "MusicClose", GTK_STOCK_CLOSE, N_("_Close"), "<control>W",
 	  N_("Hide the music player window"),
-	  G_CALLBACK (toggle_window_cmd) }
+	  G_CALLBACK (toggle_window_cmd) },
+        { "TrayShowWindow", NULL, N_("_Show Rhythmbox"), NULL,
+          N_("Show the music player window"),
+          G_CALLBACK (toggle_window_cmd) },
+	{ "TrayDisplayArtist", NULL, NULL, NULL, NULL },
+	{ "TrayDisplayTitle", NULL, N_("Not playing"), NULL, NULL, NULL }
 };
 
 static GtkToggleActionEntry rb_status_icon_plugin_toggle_entries [] =
 {
-	{ "TrayShowWindow", NULL, N_("_Show Music Player"), NULL,
+	{ "TrayToggleWindow", NULL, N_("_Show Music Player"), NULL,
 	  N_("Choose music to play"),
 	  G_CALLBACK (show_window_cmd) },
 	{ "TrayShowNotifications", NULL, N_("Show N_otifications"), NULL,
@@ -289,6 +297,24 @@ rb_status_icon_plugin_button_press_event (RBStatusIconPlugin *plugin,
 	}
 }
 
+GtkWidget *
+rb_status_icon_get_popup (RBStatusIconPlugin *plugin)
+{
+#ifdef HAVE_APP_INDICATOR
+        GtkWidget *popup;
+        GtkUIManager *uim;
+
+        g_object_get (plugin->priv->shell, "ui-manager", &uim, NULL);
+        popup = gtk_ui_manager_get_widget (GTK_UI_MANAGER (uim),
+                                           "/RhythmboxIndicator");
+	g_object_unref (uim);
+
+        return popup;
+#else
+	return NULL;
+#endif
+}
+
 static void
 sync_actions (RBStatusIconPlugin *plugin)
 {
@@ -298,7 +324,7 @@ sync_actions (RBStatusIconPlugin *plugin)
 	plugin->priv->syncing_actions = TRUE;
 
 	action = gtk_action_group_get_action (plugin->priv->action_group,
-					      "TrayShowWindow");
+					      "TrayToggleWindow");
 	g_object_get (plugin->priv->shell, "visibility", &visible, NULL);
 	gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (action), visible);
 
@@ -460,10 +486,12 @@ should_notify (RBStatusIconPlugin *plugin)
 
 	case ICON_ALWAYS:
 	case ICON_OWNS_WINDOW:
+#ifndef HAVE_APP_INDICATOR
 		if (rb_tray_icon_is_embedded (plugin->priv->tray_icon) == FALSE) {
 			rb_debug ("status icon is not embedded, not notifying");
 			return FALSE;
 		}
+#endif
 		break;
 
 	default:
@@ -571,10 +599,47 @@ update_tooltip (RBStatusIconPlugin *plugin)
 	gboolean playing;
 	char *elapsed_string;
 	GString *secondary;
+#ifdef HAVE_APP_INDICATOR
+	GtkAction *action;
+        GtkUIManager *ui_manager;
+	GtkWidget *widget;
+#endif
 
 	rb_shell_player_get_playing (plugin->priv->shell_player, &playing, NULL);
 	elapsed_string = rb_shell_player_get_playing_time_string (plugin->priv->shell_player);
 
+#ifdef HAVE_APP_INDICATOR
+        g_object_get (plugin->priv->shell, "ui-manager", &ui_manager, NULL);
+	action = gtk_action_group_get_action (plugin->priv->action_group,
+					      "TrayDisplayArtist");
+	if (plugin->priv->current_artist != NULL &&
+	    *plugin->priv->current_artist != '\0') {
+		gtk_action_set_label (action, plugin->priv->current_artist);
+		gtk_action_set_visible (action, TRUE);
+	} else {
+		gtk_action_set_visible (action, FALSE);
+	}
+	/* Requires manual synchronization because of Gtk+ bug */
+        widget = gtk_ui_manager_get_widget (GTK_UI_MANAGER (ui_manager),
+                                            "/RhythmboxIndicator/DisplayArtist");
+	gtk_menu_item_set_label (GTK_MENU_ITEM (widget),
+				 gtk_action_get_label (action));
+
+	action = gtk_action_group_get_action (plugin->priv->action_group,
+					      "TrayDisplayTitle");
+	if (plugin->priv->current_title == NULL) {
+		gtk_action_set_label (action, _("Not playing"));
+	} else {
+		gtk_action_set_label (action, plugin->priv->current_title);
+	}
+	/* Requires manual synchronization because of Gtk+ bug */
+        widget = gtk_ui_manager_get_widget (GTK_UI_MANAGER (ui_manager),
+                                            "/RhythmboxIndicator/DisplayTitle");
+	gtk_menu_item_set_label (GTK_MENU_ITEM (widget),
+				 gtk_action_get_label (action));
+
+	g_object_unref (ui_manager);
+#endif
 	secondary = g_string_sized_new (100);
 	if (plugin->priv->current_album_and_artist != NULL) {
 		g_string_append (secondary, plugin->priv->current_album_and_artist);
@@ -701,6 +766,10 @@ update_current_playing_data (RBStatusIconPlugin *plugin, RhythmDBEntry *entry)
 	g_free (plugin->priv->current_album_and_artist);
 	plugin->priv->current_title = NULL;
 	plugin->priv->current_album_and_artist = NULL;
+#ifdef HAVE_APP_INDICATOR
+	g_free (plugin->priv->current_artist);
+	plugin->priv->current_artist = NULL;
+#endif
 
 	if (entry == NULL)
 		return;
@@ -712,11 +781,17 @@ update_current_playing_data (RBStatusIconPlugin *plugin, RhythmDBEntry *entry)
 						       entry,
 						       RHYTHMDB_PROP_STREAM_SONG_ARTIST);
 	if (value != NULL) {
+#ifdef HAVE_APP_INDICATOR
+		plugin->priv->current_artist = g_strdup (g_value_get_string (value));
+#endif
 		artist = markup_escape (g_value_get_string (value));
 		g_value_unset (value);
 		g_free (value);
 	} else {
 		artist = markup_escape (rhythmdb_entry_get_string (entry, RHYTHMDB_PROP_ARTIST));
+#ifdef HAVE_APP_INDICATOR
+		plugin->priv->current_artist = g_strdup (rhythmdb_entry_get_string (entry, RHYTHMDB_PROP_ARTIST));
+#endif
 	}
 
 	/* get album, preferring streaming song details */
@@ -1222,6 +1297,14 @@ impl_get_config_widget (RBPlugin *bplugin)
 	plugin->priv->icon_combo = GTK_WIDGET (gtk_builder_get_object (builder, "statusiconmode"));
 	plugin->priv->notify_combo = GTK_WIDGET (gtk_builder_get_object (builder, "notificationmode"));
 	plugin->priv->wheel_combo = GTK_WIDGET (gtk_builder_get_object (builder, "mousewheelmode"));
+#ifdef HAVE_APP_INDICATOR
+	gtk_widget_hide (GTK_WIDGET (gtk_builder_get_object (builder, "mousewheelmode")));
+	gtk_widget_set_no_show_all (GTK_WIDGET (gtk_builder_get_object (builder, "mousewheelmode")),
+				 TRUE);
+	gtk_widget_hide (GTK_WIDGET (gtk_builder_get_object (builder, "mousewheellabel")));
+	gtk_widget_set_no_show_all (GTK_WIDGET (gtk_builder_get_object (builder, "mousewheellabel")),
+				 TRUE);
+#endif
 	g_signal_connect_object (plugin->priv->notify_combo,
 				 "changed",
 				 G_CALLBACK (notification_config_changed_cb),
@@ -1251,6 +1334,9 @@ impl_activate (RBPlugin *bplugin,
 	RhythmDBEntry *entry;
 	GtkWindow *window;
 	char *uifile;
+#ifdef HAVE_APP_INDICATOR
+	GtkAction *action;
+#endif
 
 	rb_debug ("activating status icon plugin");
 
@@ -1330,6 +1416,18 @@ impl_activate (RBPlugin *bplugin,
 	}
 	update_tooltip (plugin);
 
+#ifdef HAVE_APP_INDICATOR
+	action = gtk_action_group_get_action (plugin->priv->action_group,
+					      "TrayDisplayArtist");
+	gtk_action_set_visible (action, FALSE);
+	gtk_action_set_sensitive (action, FALSE);
+
+	action = gtk_action_group_get_action (plugin->priv->action_group,
+					      "TrayDisplayTitle");
+	gtk_action_set_visible (action, TRUE);
+	gtk_action_set_sensitive (action, FALSE);
+#endif
+
 	g_object_unref (ui_manager);
 	g_object_unref (window);
 }
@@ -1418,6 +1516,10 @@ impl_deactivate	(RBPlugin *bplugin,
 	plugin->priv->current_title = NULL;
 	plugin->priv->current_album_and_artist = NULL;
 	plugin->priv->tooltip_markup = NULL;
+#ifdef HAVE_APP_INDICATOR
+	g_free (plugin->priv->current_artist);
+	plugin->priv->current_artist = NULL;
+#endif
 
 	forget_pixbufs (plugin);
 }
diff --git a/plugins/status-icon/rb-status-icon-plugin.h b/plugins/status-icon/rb-status-icon-plugin.h
index 8472c15..26ea40b 100644
--- a/plugins/status-icon/rb-status-icon-plugin.h
+++ b/plugins/status-icon/rb-status-icon-plugin.h
@@ -72,6 +72,8 @@ gboolean	rb_status_icon_plugin_set_tooltip	(GtkWidget *widget,
 							 GtkTooltip *tooltip,
 							 RBStatusIconPlugin *plugin);
 
+GtkWidget      *rb_status_icon_get_popup                (RBStatusIconPlugin *plugin);
+
 G_END_DECLS
 
 #endif /* __RB_STATUS_ICON_PLUGIN_H */
diff --git a/plugins/status-icon/status-icon-preferences.ui b/plugins/status-icon/status-icon-preferences.ui
index 3376591..7990886 100644
--- a/plugins/status-icon/status-icon-preferences.ui
+++ b/plugins/status-icon/status-icon-preferences.ui
@@ -161,7 +161,7 @@
                       </packing>
                     </child>
                     <child>
-                      <object class="GtkLabel" id="label5">
+                      <object class="GtkLabel" id="mousewheellabel">
                         <property name="visible">True</property>
                         <property name="xalign">0</property>
                         <property name="label" translatable="yes">_Mouse wheel:</property>
diff --git a/plugins/status-icon/status-icon-ui.xml b/plugins/status-icon/status-icon-ui.xml
index a5cb6e1..a4eee9d 100644
--- a/plugins/status-icon/status-icon-ui.xml
+++ b/plugins/status-icon/status-icon-ui.xml
@@ -15,12 +15,26 @@
       <menuitem name="PreviousTray" action="ControlPrevious"/>
       <menuitem name="NextTray" action="ControlNext"/>
       <separator/>
-      <menuitem name="ShowWindowTray" action="TrayShowWindow"/>
+      <menuitem name="ShowWindowTray" action="TrayToggleWindow"/>
       <menuitem name="ShowNotifications" action="TrayShowNotifications"/>
       <separator/>
       <placeholder name="PluginPlaceholder"/> <!-- .. hmm. -->
       <separator/>
       <menuitem name="QuitTray" action="MusicQuit"/>
   </popup>
+
+  <popup name="RhythmboxIndicator">
+      <menuitem name="DisplayArtist" action="TrayDisplayArtist"/>
+      <menuitem name="DisplayTitle" action="TrayDisplayTitle"/>
+      <separator/>
+      <menuitem name="PlayTray" action="ControlPlay"/>
+      <separator/>
+      <menuitem name="PreviousTray" action="ControlPrevious"/>
+      <menuitem name="NextTray" action="ControlNext"/>
+      <separator/>
+      <menuitem name="ShowWindowTray" action="TrayShowWindow"/>
+      <menuitem name="QuitTray" action="MusicQuit"/>
+  </popup>
+
 </ui>
 
