diff -Naur rhythmbox/shell/rb-shell-player.c rhythmbox-album_icon/shell/rb-shell-player.c
--- rhythmbox/shell/rb-shell-player.c	2004-02-04 07:01:14.000000000 +0100
+++ rhythmbox-album_icon/shell/rb-shell-player.c	2004-02-05 03:54:52.000000000 +0100
@@ -1519,6 +1519,7 @@
 {
 	const char *entry_title = NULL;
 	const char *artist = NULL;	
+	const char *location = NULL;
 	char *title;
 	RhythmDBEntry *entry;
 	char *duration;
@@ -1533,10 +1534,26 @@
 							 entry, RHYTHMDB_PROP_TITLE);
 		artist = rhythmdb_entry_get_string (player->priv->db, entry,
 						    RHYTHMDB_PROP_ARTIST);
-
+		location = rhythmdb_entry_get_string (player->priv->db, 
+							entry, RHYTHMDB_PROP_LOCATION);
+		
 		rhythmdb_read_unlock (player->priv->db);
 	}
 
+	if (location) {
+		char *dir;
+		const char *local_path = NULL;
+		
+		/* Do we need to free this? */
+		local_path = gnome_vfs_get_local_path_from_uri (location);
+		g_assert (local_path);
+		
+		dir = g_path_get_dirname(local_path);
+		rb_header_set_album_icon (player->priv->header_widget, dir);
+		g_free(dir);
+	} else 
+		rb_header_set_album_icon (player->priv->header_widget, NULL);
+	
 	if (player->priv->have_url)
 		rb_header_set_urldata (player->priv->header_widget,
 				       entry_title,
diff -Naur rhythmbox/widgets/rb-header.c rhythmbox-album_icon/widgets/rb-header.c
--- rhythmbox/widgets/rb-header.c	2003-12-16 16:36:46.000000000 +0100
+++ rhythmbox-album_icon/widgets/rb-header.c	2004-02-05 03:55:15.000000000 +0100
@@ -74,10 +74,11 @@
 
 	char *title;
 	char *urltext, *urllink;
-
+	char *album_icon_path;
+	
 	RBPlayer *mmplayer;
 
-	GtkWidget *image;
+	GtkWidget *album_icon;
 	GtkWidget *song;
 
 	GtkWidget *timeframe;
@@ -115,6 +116,7 @@
 	PROP_TITLE,
 	PROP_URLTEXT,
 	PROP_URLLINK,
+	PROP_ALBUM_ICON_PATH,
 };
 
 static GObjectClass *parent_class = NULL;
@@ -124,6 +126,15 @@
 #define ALBUM_INFO_URL(xALBUM)   g_strdup_printf ("http://www.allmusic.com/cg/amg.dll?p=amg&opt1=2&sql=%s", xALBUM);
 #define ARTIST_INFO_URL(xARTIST) g_strdup_printf ("http://www.allmusic.com/cg/amg.dll?p=amg&opt1=1&sql=%s", xARTIST);
 
+static const char *valid_cover_names[] = {
+	"cover.jpg",
+	"cover.JPG",
+	"cover.gif",
+	"cover.GIF",
+	NULL
+};
+
+
 GType
 rb_header_get_type (void)
 {
@@ -205,7 +216,13 @@
 							      "urllink",
 							      NULL,
 							      G_PARAM_READWRITE));
-
+	g_object_class_install_property (object_class,
+					 PROP_ALBUM_ICON_PATH,
+					 g_param_spec_string ("album_icon_path",
+							      "album_icon_path",
+							      "album_icon_path",
+							      NULL,
+							      G_PARAM_READWRITE));
 }
 
 static void
@@ -215,6 +232,7 @@
 	 * The children in this widget look like this:
 	 * RBHeader
 	 *   GtkHBox
+     *     GtkImage     (priv->album_icon)
 	 *     GtkVBox
 	 *       GtkAlignment
 	 *         GtkVBox
@@ -243,10 +261,8 @@
 
 	hbox = gtk_hbox_new (FALSE, 10);
 
-#if 0
-	player->priv->image = gtk_image_new ();
-	gtk_box_pack_start (GTK_BOX (hbox), player->priv->image, FALSE, TRUE, 0);
-#endif
+	player->priv->album_icon = gtk_image_new ();
+	gtk_box_pack_start (GTK_BOX (hbox), player->priv->album_icon, FALSE, TRUE, 0);
 
 	vbox = gtk_vbox_new (FALSE, 5);
 
@@ -377,6 +393,10 @@
 		g_free (player->priv->urllink);
 		player->priv->urllink = g_value_dup_string (value);
 		break;
+	case PROP_ALBUM_ICON_PATH:
+		g_free (player->priv->album_icon_path);
+		player->priv->album_icon_path = g_value_dup_string (value);
+		break;
 	default:
 		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
 		break;
@@ -410,6 +430,9 @@
 	case PROP_URLLINK:
 		g_value_set_string (value, player->priv->urllink);
 		break;
+	case PROP_ALBUM_ICON_PATH:
+		g_value_set_string (value, player->priv->album_icon_path);
+		break;
 	default:
 		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
 		break;
@@ -442,6 +465,14 @@
 	g_object_set (G_OBJECT (player), "title", title, NULL);
 }
 
+void
+rb_header_set_album_icon (RBHeader *player, const char *path)
+{
+	g_object_set (G_OBJECT (player), "album_icon_path", path, NULL);
+}
+
+
+
 static long
 rb_header_get_duration (RBHeader *player)
 {
@@ -461,6 +492,7 @@
 rb_header_sync (RBHeader *player)
 {
 	char *tmp;
+	GdkPixbuf *pixbuf = NULL;		
 
 	rb_debug ("syncing with node = %p", player->priv->entry);
 	if (player->priv->entry != NULL) {
@@ -550,6 +582,33 @@
 		rb_header_set_show_timeline (player, have_duration);
 		if (have_duration)
 			rb_header_sync_time (player);
+
+		if (player->priv->album_icon_path) {
+			GdkPixbuf *tmp = NULL;
+			char *path = NULL;
+			int i;
+			
+			for (i = 0; valid_cover_names[i] != NULL; i++) {
+				path = g_build_filename (player->priv->album_icon_path, valid_cover_names[i], NULL); 
+				if (g_file_test (path, G_FILE_TEST_IS_REGULAR | G_FILE_TEST_EXISTS)) break;
+				g_free (path);
+				path = NULL;
+			}				
+			
+			if (path) {
+				tmp = gdk_pixbuf_new_from_file (path, NULL);
+				g_free (path);
+			}
+			
+			if (tmp) {
+				int width = 0, height = 0;
+				
+				gtk_icon_size_lookup (GTK_ICON_SIZE_DIALOG, &width, &height);
+				pixbuf = gdk_pixbuf_scale_simple(tmp, width, height, GDK_INTERP_BILINEAR);
+				gdk_pixbuf_unref (tmp);
+			}
+		}
+
 	} else {
 		GtkTooltips *iradio_href_tips;
 
@@ -568,13 +627,11 @@
 		rb_header_set_show_artist_album (player, FALSE);
 		rb_header_set_show_timeline (player, FALSE);
 	}
-
-#if 0
-	if (pixbuf != NULL)
-		gtk_image_set_from_pixbuf (GTK_IMAGE (player->priv->image), pixbuf);
-	else
-		gtk_image_set_from_stock (GTK_IMAGE (player->priv->image), RB_STOCK_ALBUM, GTK_ICON_SIZE_DIALOG);
-#endif
+		if (pixbuf != NULL) {
+			gtk_image_set_from_pixbuf (GTK_IMAGE (player->priv->album_icon), pixbuf);
+			gdk_pixbuf_unref (pixbuf);
+		} else
+			gtk_image_set_from_stock (GTK_IMAGE (player->priv->album_icon), RB_STOCK_ALBUM, GTK_ICON_SIZE_DIALOG);
 }
 
 void
diff -Naur rhythmbox/widgets/rb-header.h rhythmbox-album_icon/widgets/rb-header.h
--- rhythmbox/widgets/rb-header.h	2003-12-16 16:36:46.000000000 +0100
+++ rhythmbox-album_icon/widgets/rb-header.h	2004-02-05 03:55:15.000000000 +0100
@@ -61,6 +61,9 @@
 void		rb_header_set_title		(RBHeader *player,
 						 const char *title);
 
+void		rb_header_set_album_icon	(RBHeader *player,
+						 const char *path);
+
 void		rb_header_set_show_artist_album	(RBHeader *player,
 						 gboolean show);
 
