Index: sources/rb-streaming-source.c
===================================================================
--- sources/rb-streaming-source.c	(revision 4925)
+++ sources/rb-streaming-source.c	(working copy)
@@ -336,22 +336,6 @@
 	}
 }
 
-static gboolean
-emit_notification_cb (RBStreamingSource *source)
-{
-	RBShell *shell;
-
-	source->priv->emit_notify_id = 0;
-
-	g_object_get (G_OBJECT (source), "shell", &shell, NULL);
-	rb_shell_notify_playing_entry (shell,
-				       source->priv->playing_stream,
-				       FALSE);
-	g_object_unref (shell);
-
-	return FALSE;
-}
-
 static void
 set_streaming_metadata (RBStreamingSource *source,
 			char **field,
@@ -375,13 +359,6 @@
 						   metadata_field,
 						   &v);
 	g_value_unset (&v);
-
-	if (source->priv->emit_notify_id != 0)
-		g_source_remove (source->priv->emit_notify_id);
-
-	source->priv->emit_notify_id = g_timeout_add (STREAMING_METADATA_NOTIFY_TIMEOUT,
-						      (GSourceFunc) emit_notification_cb,
-						      source);
 }
 
 void
Index: sources/rb-podcast-source.c
===================================================================
--- sources/rb-podcast-source.c	(revision 4925)
+++ sources/rb-podcast-source.c	(working copy)
@@ -202,7 +202,6 @@
 static void rb_podcast_source_cb_interval_changed_cb 	(GtkComboBox *box, gpointer cb_data);
 
 static gboolean rb_podcast_source_load_finish_cb  	(gpointer cb_data);
-static RBShell *rb_podcast_source_get_shell		(RBPodcastSource *source);
 static void rb_podcast_source_entry_activated_cb (RBEntryView *view,
 						  RhythmDBEntry *entry,
 						  RBPodcastSource *source);
@@ -1743,12 +1742,7 @@
 				     RhythmDBEntry *entry,
 				     RBPodcastSource *source)
 {
-	RBShell *shell = rb_podcast_source_get_shell (source);
-	const gchar *podcast_name = rhythmdb_entry_get_string(entry, RHYTHMDB_PROP_TITLE);
-
 	rb_debug ("Start download");
-	rb_shell_hidden_notify (shell, 4000, _("Downloading podcast"), NULL, podcast_name, FALSE);
-	g_object_unref (shell);
 }
 
 static void
@@ -1756,12 +1750,7 @@
 				      RhythmDBEntry *entry,
 				      RBPodcastSource *source)
 {
-	RBShell *shell = rb_podcast_source_get_shell (source);
-	const gchar *podcast_name = rhythmdb_entry_get_string(entry, RHYTHMDB_PROP_TITLE);
-
 	rb_debug ("Finish download");
-	rb_shell_hidden_notify (shell, 4000, _("Finished downloading podcast"), NULL, podcast_name, FALSE);
-	g_object_unref (shell);
 }
 
 static void
@@ -1769,25 +1758,9 @@
 					     RhythmDBEntry *entry,
 					     RBPodcastSource *source)
 {
-	RBShell *shell = rb_podcast_source_get_shell (source);
-	const gchar *podcast_name = rhythmdb_entry_get_string(entry, RHYTHMDB_PROP_TITLE);
-
 	rb_debug ("Updates available");
-	rb_shell_hidden_notify (shell, 4000, _("New updates available from"), NULL, podcast_name, FALSE);
-	g_object_unref (shell);
-
 }
 
-static RBShell *
-rb_podcast_source_get_shell (RBPodcastSource *source)
-{
-	RBShell *shell;
-
-	g_object_get (source, "shell", &shell, NULL);
-
-	return shell;
-}
-
 void
 rb_podcast_source_shutdown	(RBPodcastSource *source)
 {
Index: bindings/python/rb.defs
===================================================================
--- bindings/python/rb.defs	(revision 4925)
+++ bindings/python/rb.defs	(working copy)
@@ -349,18 +349,13 @@
   (c-name "rb_shell_get_playlist_manager")
   (return-type "GObject*")
 )
+
 (define-method get_ui_manager
   (of-object "RBShell")
   (c-name "rb_shell_get_ui_manager")
   (return-type "GObject*")
 )
 
-(define-method toggle_visibility
-  (of-object "RBShell")
-  (c-name "rb_shell_toggle_visibility")
-  (return-type "none")
-)
-
 (define-method add_to_queue
   (of-object "RBShell")
   (c-name "rb_shell_add_to_queue")
@@ -381,29 +376,6 @@
   )
 )
 
-(define-method hidden_notify
-  (of-object "RBShell")
-  (c-name "rb_shell_hidden_notify")
-  (return-type "none")
-  (parameters
-    '("guint" "timeout")
-    '("const-char*" "primary")
-    '("GtkWidget*" "icon")
-    '("const-char*" "secondary")
-    '("gboolean" "requested")
-  )
-)
-
-(define-method notify_playing_entry
-  (of-object "RBShell")
-  (c-name "rb_shell_notify_playing_entry")
-  (return-type "none")
-  (parameters
-    '("RhythmDBEntry*" "entry")
-    '("gboolean" "requested")
-  )
-)
-
 (define-method register_entry_type_for_source
   (of-object "RBShell")
   (c-name "rb_shell_register_entry_type_for_source")
Index: lib/rb-preferences.h
===================================================================
--- lib/rb-preferences.h	(revision 4925)
+++ lib/rb-preferences.h	(working copy)
@@ -46,7 +46,6 @@
 #define CONF_STATE_PLAY_ORDER	CONF_PREFIX "/state/play_order"
 #define CONF_STATE_VOLUME	CONF_PREFIX "/state/volume"
 #define CONF_STATE_BURN_DEVICE	CONF_PREFIX "/state/burn_device"
-#define CONF_STATE_WINDOW_VISIBLE	CONF_PREFIX "/state/window_visible"
 #define CONF_UI_AUTO_PROXY_COMPLAINT	CONF_PREFIX "/ui/auto_proxy_complaint"
 
 #define CONF_AUDIOSCROBBLER_USERNAME CONF_PREFIX "/audioscrobbler/username"
Index: shell/rb-shell.c
===================================================================
--- shell/rb-shell.c	(revision 4925)
+++ shell/rb-shell.c	(working copy)
@@ -64,7 +64,6 @@
 #include "rb-shell-clipboard.h"
 #include "rb-shell-player.h"
 #include "rb-source-header.h"
-#include "rb-tray-icon.h"
 #include "rb-statusbar.h"
 #include "rb-shell-preferences.h"
 #include "rb-library-source.h"
@@ -156,13 +155,9 @@
 					   RBShell *shell);
 static void rb_shell_source_deleted_cb (RBSource *source, RBShell *shell);
 static void rb_shell_set_window_title (RBShell *shell, const char *window_title);
-static void rb_shell_update_tray_tooltip_elapsed (RBShell *shell);
 static void rb_shell_player_window_title_changed_cb (RBShellPlayer *player,
 					             const char *window_title,
 					             RBShell *shell);
-static void rb_shell_player_elapsed_changed_cb (RBShellPlayer *player,
-						guint elapsed,
-						RBShell *shell);
 static void rb_shell_cmd_about (GtkAction *action,
 		                RBShell *shell);
 static void rb_shell_cmd_contents (GtkAction *action,
@@ -207,8 +202,7 @@
 static void rb_shell_sync_pane_visibility (RBShell *shell);
 static void rb_shell_sync_statusbar_visibility (RBShell *shell);
 static void rb_shell_set_visibility (RBShell *shell,
-				     gboolean visible,
-				     gboolean force);
+				     gboolean visible);
 static void sidepane_visibility_changed_cb (GConfClient *client,
 					    guint cnxn_id,
 					    GConfEntry *entry,
@@ -228,9 +222,6 @@
 static gboolean rb_shell_show_popup_cb (RBSourceList *sourcelist,
 					RBSource *target,
 					RBShell *shell);
-static gboolean tray_destroy_cb (GtkObject *object, RBShell *shell);
-static void rb_shell_construct_notify_titles (RBShell *shell, 
-					      RhythmDBEntry *entry);
 
 static gboolean save_yourself_cb (GnomeClient *client,
                                   gint phase,
@@ -367,7 +358,6 @@
 	GtkWidget *prefs;
 	GtkWidget *plugins;
 
-	RBTrayIcon *tray_icon;
 	GtkTooltips *tooltips;
 	GtkWidget *volume_button;
 	gboolean syncing_volume;
@@ -376,9 +366,6 @@
 	char *cached_duration;
 	gboolean cached_playing;
 
-	/* markup, used for notifications and for tray tooltips */
-	char *cached_notify_primary;
-	char *cached_notify_secondary;
 	GtkWidget *cached_art_icon;
 
 	guint sidepane_visibility_notify_id;
@@ -729,7 +716,7 @@
 		shell->priv->playlists_file = g_value_dup_string (value);
 		break;
 	case PROP_VISIBILITY:
-		rb_shell_set_visibility (shell, g_value_get_boolean (value), FALSE);
+		rb_shell_set_visibility (shell, g_value_get_boolean (value));
 		break;
 	default:
 		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
@@ -877,10 +864,9 @@
 		return;
 	shell->priv->shutting_down = TRUE;
 
-	/* Hide the main window and tray icon as soon as possible */
+	/* Hide the main window as soon as possible */
 	display = gtk_widget_get_display (shell->priv->window);
 	gtk_widget_hide (shell->priv->window);
-	gtk_widget_hide (GTK_WIDGET (shell->priv->tray_icon));
 	gdk_display_sync (display);
 }
 
@@ -901,12 +887,6 @@
 
 	g_list_free (shell->priv->supported_media_extensions);
 
-	gtk_widget_destroy (GTK_WIDGET (shell->priv->tray_icon));
-
-	if (shell->priv->cached_notify_primary != NULL)
-		g_free (shell->priv->cached_notify_primary);
-	if (shell->priv->cached_notify_secondary != NULL)
-		g_free (shell->priv->cached_notify_secondary);
 	if (shell->priv->cached_art_icon != NULL)
 		g_object_unref (shell->priv->cached_art_icon);
 
@@ -1079,10 +1059,6 @@
 				 "window_title_changed",
 				 G_CALLBACK (rb_shell_player_window_title_changed_cb),
 				 shell, 0);
-	g_signal_connect_object (G_OBJECT (shell->priv->player_shell),
-				 "elapsed_changed",
-				 G_CALLBACK (rb_shell_player_elapsed_changed_cb),
-				 shell, 0);
 	shell->priv->clipboard_shell = rb_shell_clipboard_new (shell->priv->actiongroup,
 							       shell->priv->ui_manager,
 							       shell->priv->db);
@@ -1336,9 +1312,6 @@
 	/* initialize shell services */
 	construct_widgets (shell);
 
-	rb_debug ("shell: setting up tray icon");
-	tray_destroy_cb (NULL, shell);
-
 	rb_debug ("shell: adding gconf notification");
 	/* sync state */
 	shell->priv->sidepane_visibility_notify_id =
@@ -1405,7 +1378,6 @@
 
 	rb_debug ("shell: syncing window state");
 	rb_shell_sync_paned (shell);
-	gtk_widget_show_all (GTK_WIDGET (shell->priv->tray_icon));
 
 	/* Stop here if this is the first time. */
 	if (!eel_gconf_get_boolean (CONF_FIRST_TIME)) {
@@ -1418,7 +1390,7 @@
 
 		gtk_widget_show_all (GTK_WIDGET (druid));
 	} else {
-		rb_shell_set_visibility (shell, eel_gconf_get_boolean (CONF_STATE_WINDOW_VISIBLE), TRUE);
+		rb_shell_set_visibility (shell, TRUE);
 		gdk_notify_startup_complete ();
 	}
 
@@ -1440,30 +1412,6 @@
 	return G_OBJECT (shell);
 }
 
-/* Based on a function found in wnck */
-static void
-set_icon_geometry  (GdkWindow *window,
-		    int        x,
-		    int        y,
-		    int        width,
-		    int        height)
-{
-	gulong data[4];
-	Display *dpy = gdk_x11_drawable_get_xdisplay (window);
-
-	data[0] = x;
-	data[1] = y;
-	data[2] = width;
-	data[3] = height;
-
-	XChangeProperty (dpy,
-			 GDK_WINDOW_XID (window),
-			 gdk_x11_get_xatom_by_name_for_display (gdk_drawable_get_display (window),
-								"_NET_WM_ICON_GEOMETRY"),
-			 XA_CARDINAL, 32, PropModeReplace,
-			 (guchar *)&data, 4);
-}
-
 static gboolean
 rb_shell_window_state_cb (GtkWidget *widget,
 			  GdkEventWindowState *event,
@@ -1514,51 +1462,24 @@
 	return TRUE;
 }
 
-static gboolean
-idle_hide_mainwindow (gpointer data)
-{
-	RBShell *shell = RB_SHELL (data);
-
-	GDK_THREADS_ENTER ();
-
-	gtk_widget_hide (GTK_WIDGET (shell->priv->window));
-
-	g_signal_emit (shell, rb_shell_signals[VISIBILITY_CHANGED], 0, FALSE);
-
-	g_object_unref (shell);
-
-	GDK_THREADS_LEAVE ();
-
-	return FALSE;
-}
-
 static void
 rb_shell_set_visibility (RBShell *shell,
-			 gboolean visible,
-			 gboolean force)
+			 gboolean visible)
 {
 	gboolean current_visible;
 
 	rb_profile_start ("changing shell visibility");
 
 	current_visible = rb_shell_get_visibility (shell);
-	if (!force && visible == current_visible) {
+	if (visible == current_visible) {
 		rb_profile_end ("changing shell visibility");
 		return;
 	}
 
-	/* FIXME - see below */
-	if (shell->priv->idle_hide_mainwindow_id > 0)
-		g_source_remove (shell->priv->idle_hide_mainwindow_id);
-	shell->priv->idle_hide_mainwindow_id = 0;
-
-	/* don't minimise if we have no tray icon */
-	if (visible || (!force && !egg_tray_icon_have_manager (EGG_TRAY_ICON (shell->priv->tray_icon)))) {
+	if (visible) {
 		rb_debug ("showing main window");
 		rb_shell_sync_window_state (shell, FALSE);
 
-		if (egg_tray_icon_have_manager (EGG_TRAY_ICON (shell->priv->tray_icon)))
-			gtk_window_set_skip_taskbar_hint (GTK_WINDOW (shell->priv->window), FALSE);
 		gtk_widget_show (GTK_WIDGET (shell->priv->window));
 		gtk_window_deiconify (GTK_WINDOW (shell->priv->window));
 
@@ -1568,30 +1489,10 @@
 			gtk_widget_show_all (GTK_WIDGET (shell->priv->window));
 
 		g_signal_emit (shell, rb_shell_signals[VISIBILITY_CHANGED], 0, visible);
-
-		eel_gconf_set_boolean (CONF_STATE_WINDOW_VISIBLE, TRUE);
 	} else {
-		int x, y, width, height;
-
 		rb_debug ("hiding main window");
 		shell->priv->iconified = TRUE;
-		rb_tray_icon_get_geom (shell->priv->tray_icon,
-				       &x, &y, &width, &height);
-		if (GTK_WIDGET_REALIZED (GTK_WIDGET (shell->priv->window)))
-			set_icon_geometry (GTK_WIDGET (shell->priv->window)->window,
-					   x, y, width, height);
-		if (egg_tray_icon_have_manager (EGG_TRAY_ICON (shell->priv->tray_icon)))
-			gtk_window_set_skip_taskbar_hint (GTK_WINDOW (shell->priv->window), TRUE);
 		gtk_window_iconify (GTK_WINDOW (shell->priv->window));
-
-		/* FIMXE - this is horribly evil racy workaround for a
-		 * current bug in the tasklist not noticing our hint
-		 * change
-		 */
-		shell->priv->idle_hide_mainwindow_id =
-			g_timeout_add (250, idle_hide_mainwindow, g_object_ref (shell));
-
-		eel_gconf_set_boolean (CONF_STATE_WINDOW_VISIBLE, FALSE);
 	}
 
 	rb_profile_end ("changing shell visibility");
@@ -1756,7 +1657,6 @@
 	GdkPixbuf *my_pixbuf;
 	RhythmDBEntry *playing_entry;
 	gint icon_size;
-	guint time;
 
 	playing_entry = rb_shell_player_get_playing_entry (shell->priv->player_shell);
 	if (playing_entry == NULL)
@@ -1785,14 +1685,6 @@
 		}
 	}
 
-	rb_tray_icon_set_tooltip_icon (shell->priv->tray_icon,
-				       shell->priv->cached_art_icon);
-
-	if (rb_shell_player_get_playing_time (shell->priv->player_shell, &time, NULL)) {
-		if (time < PLAYING_ENTRY_NOTIFY_TIME)
-			rb_shell_notify_playing_entry (shell, entry, FALSE);
-	}
-
 	rhythmdb_entry_unref (playing_entry);
 }
 
@@ -1988,12 +1880,6 @@
 	if (shell->priv->cached_art_icon != NULL)
 		g_object_unref (shell->priv->cached_art_icon);
 	shell->priv->cached_art_icon = NULL;
-
-	rb_shell_notify_playing_entry (shell, entry, FALSE);
-
-	rb_tray_icon_set_tooltip_primary_markup (shell->priv->tray_icon, shell->priv->cached_notify_primary);
-	rb_tray_icon_set_tooltip_icon (shell->priv->tray_icon, shell->priv->cached_art_icon);
-	rb_shell_update_tray_tooltip_elapsed (shell);
 }
 
 static void
@@ -2062,62 +1948,10 @@
 					 const char *window_title,
 					 RBShell *shell)
 {
-	RhythmDBEntry *entry;
 	rb_shell_set_window_title (shell, window_title);
-
-	/* also update the tooltip; this is slightly weird,
-	 * but this is the most useful way to identify
-	 * track changes in radio streams.
-	 */
-	entry = rb_shell_player_get_playing_entry (shell->priv->player_shell);
-	rb_shell_construct_notify_titles (shell, entry);
-	rb_tray_icon_set_tooltip_primary_markup (shell->priv->tray_icon, shell->priv->cached_notify_primary);
-	rb_shell_update_tray_tooltip_elapsed (shell);
-	
-	if (entry)
-		rhythmdb_entry_unref (entry);
 }
 
 static void
-rb_shell_player_elapsed_changed_cb (RBShellPlayer *player,
-				    guint elapsed,
-				    RBShell *shell)
-{
-	rb_shell_update_tray_tooltip_elapsed (shell);
-}
-
-static void
-rb_shell_update_tray_tooltip_elapsed (RBShell *shell)
-{
-	gboolean playing;
-	char *elapsed_string;
-	GString *secondary;
-
-	rb_shell_player_get_playing (shell->priv->player_shell, &playing, NULL);
-	elapsed_string = rb_shell_player_get_playing_time_string (shell->priv->player_shell);
-
-	secondary = g_string_sized_new (100);
-	if (shell->priv->cached_notify_secondary != NULL) {
-		g_string_append (secondary, shell->priv->cached_notify_secondary);
-		if (secondary->len != 0)
-			g_string_append_c (secondary, '\n');
-	}
-	if (shell->priv->cached_notify_primary == NULL) {
-		g_string_append (secondary, _("Not playing"));
-	} else if (!playing) {
-		/* Translators: the %s is the elapsed and total time */
-		g_string_append_printf (secondary, _("Paused, %s"), elapsed_string);
-	} else {
-		g_string_append (secondary, elapsed_string);
-	}
-
-	rb_tray_icon_set_tooltip_secondary_markup (shell->priv->tray_icon,
-						   secondary->str);
-	g_free (elapsed_string);
-	g_string_free (secondary, TRUE);
-}
-
-static void
 rb_shell_set_window_title (RBShell *shell,
 			   const char *window_title)
 {
@@ -2311,7 +2145,7 @@
 
 	visible = rb_shell_get_visibility (shell);
 
-	rb_shell_set_visibility (shell, !visible, FALSE);
+	rb_shell_set_visibility (shell, !visible);
 }
 
 static void
@@ -2902,218 +2736,6 @@
 }
 
 static void
-tray_embedded_cb (GtkPlug *plug,
-		  gpointer data)
-{
-	/* FIXME - this doens't work */
-#if 0
-	RBShell *shell = RB_SHELL (data);
-
-	rb_debug ("got embedded signal");
-
-	gdk_window_set_decorations (shell->priv->window->window,
-				    GDK_DECOR_ALL | GDK_DECOR_MINIMIZE | GDK_DECOR_MAXIMIZE);
-#endif
-}
-
-static gboolean
-tray_destroy_cb (GtkObject *object,
-		 RBShell *shell)
-{
-	if (shell->priv->tray_icon) {
-		rb_debug ("caught destroy event for tray icon %p", object);
-		gtk_object_sink (object);
-		shell->priv->tray_icon = NULL;
-		rb_debug ("finished sinking tray");
-	}
-
-	rb_debug ("creating new tray icon");
-	shell->priv->tray_icon = rb_tray_icon_new (shell->priv->ui_manager, shell);
-	g_signal_connect_object (G_OBJECT (shell->priv->tray_icon), "destroy",
-				 G_CALLBACK (tray_destroy_cb), shell, 0);
-	g_signal_connect_object (G_OBJECT (shell->priv->tray_icon), "embedded",
-				 G_CALLBACK (tray_embedded_cb), shell, 0);
-
- 	gtk_widget_show_all (GTK_WIDGET (shell->priv->tray_icon));
-
-	rb_debug ("done creating new tray icon %p", shell->priv->tray_icon);
- 	return TRUE;
-}
-
-static gchar *
-markup_escape (const char *text)
-{
-	return (text == NULL) ? NULL : g_markup_escape_text (text, -1);
-}
-
-static void
-rb_shell_construct_notify_titles (RBShell *shell,
-				  RhythmDBEntry *entry)
-{
-	GValue *value;
-	char *stream_title = NULL;
-	char *artist = NULL;
-	char *album = NULL;
-	char *title = NULL;
-	GString *secondary;
-
-	if (shell->priv->cached_notify_primary != NULL)
-		g_free (shell->priv->cached_notify_primary);
-	if (shell->priv->cached_notify_secondary != NULL)
-		g_free (shell->priv->cached_notify_secondary);
-
-	if (entry == NULL) {
-		shell->priv->cached_notify_primary = NULL;
-		shell->priv->cached_notify_secondary = NULL;
-		return;
-	}
-
-	secondary = g_string_sized_new (100);
-
-	/* get artist, preferring streaming song details */
-	value = rhythmdb_entry_request_extra_metadata (shell->priv->db,
-						       entry,
-						       RHYTHMDB_PROP_STREAM_SONG_ARTIST);
-	if (value != NULL) {
-		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));
-	}
-
-	if (artist != NULL && artist[0] != '\0') {
-		/* Translators: by Artist */
-		g_string_append_printf (secondary, _("by <i>%s</i>"), artist);
-	}
-	g_free (artist);
-
-	/* get album, preferring streaming song details */
-	value = rhythmdb_entry_request_extra_metadata (shell->priv->db,
-						       entry,
-						       RHYTHMDB_PROP_STREAM_SONG_ALBUM);
-	if (value != NULL) {
-		album = markup_escape (g_value_get_string (value));
-		g_value_unset (value);
-		g_free (value);
-	} else {
-		album = markup_escape (rhythmdb_entry_get_string (entry, RHYTHMDB_PROP_ALBUM));
-	}
-
-	if (album != NULL && album[0] != '\0') {
-		if (secondary->len != 0)
-			g_string_append_c (secondary, ' ');
-
-		/* Translators: from Album */
-		g_string_append_printf (secondary, _("from <i>%s</i>"), album);
-	}
-	g_free (album);
-
-	/* get title and possibly stream name.
-	 * if we have a streaming song title, the entry's title
-	 * property is the stream name.
-	 */
-	value = rhythmdb_entry_request_extra_metadata (shell->priv->db,
-						       entry,
-						       RHYTHMDB_PROP_STREAM_SONG_TITLE);
-	if (value != NULL) {
-		title = markup_escape (g_value_get_string (value));
-		g_value_unset (value);
-		g_free (value);
-
-		stream_title = markup_escape (rhythmdb_entry_get_string (entry, RHYTHMDB_PROP_TITLE));
-	} else {
-		title = markup_escape (rhythmdb_entry_get_string (entry, RHYTHMDB_PROP_TITLE));
-	}
-
-	if (stream_title != NULL && stream_title[0] != '\0') {
-		if (secondary->len == 0)
-			g_string_append (secondary, stream_title);
-		else
-			g_string_append_printf (secondary, " (%s)", stream_title);
-	}
-	g_free (stream_title);
-
-	if (title != NULL)
-		shell->priv->cached_notify_primary = title;
-	else
-		/* Translators: unknown track title */
-		shell->priv->cached_notify_primary = g_strdup (_("Unknown"));
-
-	shell->priv->cached_notify_secondary = g_string_free (secondary, FALSE);
-}
-
-void
-rb_shell_notify_playing_entry (RBShell *shell,
-			       RhythmDBEntry *entry,
-			       gboolean requested)
-{
-	rb_shell_construct_notify_titles (shell, entry);
-
-	if (entry == NULL)
-		return;
-
-	rb_shell_hidden_notify_markup (shell,
-				       PLAYING_ENTRY_NOTIFY_TIME * 1000,
-				       shell->priv->cached_notify_primary,
-				       shell->priv->cached_art_icon,
-				       shell->priv->cached_notify_secondary,
-				       requested);
-}
-
-void
-rb_shell_hidden_notify (RBShell *shell,
-			guint timeout,
-			const char *primary,
-			GtkWidget *icon,
-			const char *secondary,
-			gboolean requested)
-{
-	char *primary_markup = g_markup_escape_text (primary, -1);
-	char *secondary_markup = g_markup_escape_text (secondary, -1);
-
-	rb_shell_hidden_notify_markup (shell, timeout, primary_markup, 
-				       icon, secondary_markup, requested);
-
-	g_free (primary_markup);
-	g_free (secondary_markup);
-}
-
-void
-rb_shell_hidden_notify_markup (RBShell *shell,
-			       guint timeout,
-			       const char *primary_markup,
-			       GtkWidget *icon,
-			       const char *secondary_markup,
-			       gboolean requested)
-{
-
-	if (requested == FALSE && rb_shell_get_visibility (shell)) {
-		rb_debug ("shell is visible, not notifying");
-		return;
-	}
-
-	rb_tray_icon_notify (shell->priv->tray_icon,
-			     timeout,
-			     primary_markup,
-			     icon,
-			     secondary_markup,
-			     requested);
-}
-
-gboolean
-rb_shell_do_notify (RBShell *shell, gboolean requested, GError **error)
-{
-	RhythmDBEntry *entry;
-
-	entry = rb_shell_player_get_playing_entry (shell->priv->player_shell);
-	rb_shell_notify_playing_entry (shell, entry, requested);
-	rhythmdb_entry_unref (entry);
-
-	return TRUE;
-}
-
-static void
 session_die_cb (GnomeClient *client,
                 RBShell *shell)
 {
@@ -3423,7 +3045,6 @@
 	gtk_window_present (GTK_WINDOW (shell->priv->window));
 	gdk_window_focus (GTK_WIDGET (shell->priv->window)->window, timestamp);
 #endif
-	gtk_window_set_skip_taskbar_hint (GTK_WINDOW (shell->priv->window), FALSE);
 
 	rb_profile_end ("presenting shell");
 
Index: shell/rb-shell.h
===================================================================
--- shell/rb-shell.h	(revision 4925)
+++ shell/rb-shell.h	(working copy)
@@ -132,25 +132,6 @@
 gboolean	rb_shell_quit (RBShell *shell,
 			       GError **error);
 
-void            rb_shell_hidden_notify  (RBShell *shell,
-					 guint timeout,
-					 const char *primary,
-					 GtkWidget *icon,
-					 const char *secondary,
-					 gboolean requested);
-void            rb_shell_hidden_notify_markup  (RBShell *shell,
-						guint timeout,
-						const char *primary_markup,
-						GtkWidget *icon,
-						const char *secondary_markup,
-						gboolean requested);
-void		rb_shell_notify_playing_entry (RBShell *shell,
-					       RhythmDBEntry *entry,
-					       gboolean requested);
-gboolean	rb_shell_do_notify (RBShell *shell,
-				    gboolean requested,
-				    GError **error);
-
 void            rb_shell_register_entry_type_for_source (RBShell *shell,
 							 RBSource *source,
 							 RhythmDBEntryType type);
Index: shell/rb-shell.xml
===================================================================
--- shell/rb-shell.xml	(revision 4925)
+++ shell/rb-shell.xml	(working copy)
@@ -50,18 +50,5 @@
 
     <method name="clearQueue"/>
 
-    <method name="notify">
-      <annotation name="org.freedesktop.DBus.GLib.CSymbol" value="rb_shell_do_notify"/>
-      <arg type="b" name="userRequested"/>
-    </method>
-
-    <signal name="visibilityChanged">
-      <arg type="b" name="visibility"/>
-    </signal>
-
-    <!-- Until a version of dbus with bug #7057 fixed is widely available,
-         this does more harm than good.  -->
-    <!-- <property name="visibility" type="b" access="readwrite"/> -->
-
   </interface>
 </node>
Index: shell/Makefile.am
===================================================================
--- shell/Makefile.am	(revision 4925)
+++ shell/Makefile.am	(working copy)
@@ -88,9 +88,7 @@
 	rb-play-order-random-by-age-and-rating.c	\
 	rb-play-order-random-by-age-and-rating.h	\
 	rb-play-order-random-by-rating.c		\
-	rb-play-order-random-by-rating.h		\
-	rb-tray-icon.c					\
-	rb-tray-icon.h
+	rb-play-order-random-by-rating.h
 
 rhythmbox_LDADD =					\
 	librbshell.la					\
Index: data/ui/rhythmbox-ui.xml
===================================================================
--- data/ui/rhythmbox-ui.xml	(revision 4925)
+++ data/ui/rhythmbox-ui.xml	(working copy)
@@ -21,7 +21,6 @@
       <separator/>
       <menuitem name="MusicPropertiesMenu" action="MusicProperties"/>
       <separator/>
-      <menuitem name="MusicClose" action="MusicClose"/>
       <menuitem name="MusicQuit" action="MusicQuit"/>
     </menu>
 
@@ -110,18 +109,6 @@
   <toolbar name="SearchBar">
   </toolbar>
 
-  <popup name="RhythmboxTrayPopup">
-      <menuitem name="PlayTray" action="ControlPlay"/>
-      <separator/>
-      <menuitem name="PreviousTray" action="ControlPrevious"/>
-      <menuitem name="NextTray" action="ControlNext"/>
-      <separator/>
-      <menuitem name="ShowWindowTray" action="TrayShowWindow"/>
-      <menuitem name="ShowNotifications" action="TrayShowNotifications"/>
-      <separator/>
-      <menuitem name="QuitTray" action="MusicQuit"/>
-  </popup>
-
   <popup name="BrowserSourceViewPopup">
     <menuitem name="AddToQueueLibraryPopup" action="AddToQueue"/>
     <menu name="BrowserSourcePopupPlaylistAdd" action="EditPlaylistAdd">
Index: plugins/cd-recorder/rb-playlist-source-recorder.c
===================================================================
--- plugins/cd-recorder/rb-playlist-source-recorder.c	(revision 4925)
+++ plugins/cd-recorder/rb-playlist-source-recorder.c	(working copy)
@@ -677,8 +677,6 @@
 
                 finished_msg = _("Finished creating audio CD.");
 
-                rb_shell_hidden_notify (source->priv->shell, 0, finished_msg, source->priv->cd_icon, "", FALSE);
-
                 /* save the write speed that was used */
                 eel_gconf_set_integer (CONF_STATE_BURN_SPEED, speed);
 
Index: remote/dbus/rb-client.c
===================================================================
--- remote/dbus/rb-client.c	(revision 4925)
+++ remote/dbus/rb-client.c	(working copy)
@@ -624,13 +624,6 @@
 		print_playing_song (shell_proxy, player_proxy, "%ta - %tt");
 	}
 
-	/* 8. display notification about playing song */
-	if (notify) {
-		rb_debug ("show notification");
-		org_gnome_Rhythmbox_Shell_notify (shell_proxy, TRUE, &error);
-		annoy (&error);
-	}
-
 	g_object_unref (shell_proxy);
 	g_object_unref (player_proxy);
 	g_option_context_free (context);
Index: widgets/Makefile.am
===================================================================
--- widgets/Makefile.am	(revision 4925)
+++ widgets/Makefile.am	(working copy)
@@ -20,8 +20,6 @@
 	bacon-volume.h					\
 	rb-druid.c					\
 	rb-druid.h					\
-	eggtrayicon.c					\
-	eggtrayicon.h					\
 	rb-dialog.c					\
 	rb-dialog.h					\
 	rb-cell-renderer-pixbuf.c			\
