diff --git a/libnautilus-private/nautilus-bookmark.c b/libnautilus-private/nautilus-bookmark.c
index 94009ca..f729ace 100644
--- a/libnautilus-private/nautilus-bookmark.c
+++ b/libnautilus-private/nautilus-bookmark.c
@@ -31,9 +31,11 @@
 #include <eel/eel-gtk-macros.h>
 #include <eel/eel-string.h>
 #include <eel/eel-vfs-extensions.h>
-#include <gtk/gtk.h>
 #include <gio/gio.h>
+#include <glib/gi18n.h>
+#include <gtk/gtk.h>
 #include <libnautilus-private/nautilus-file.h>
+#include <libnautilus-private/nautilus-file-utilities.h>
 #include <libnautilus-private/nautilus-icon-names.h>
 
 enum {
@@ -192,11 +194,43 @@ nautilus_bookmark_copy (NautilusBookmark *bookmark)
 			bookmark->details->icon);
 }
 
+static char *
+get_special_display_name_for_uri (const char *uri)
+{
+	char *display_name;
+	char *home_uri;
+
+	display_name = NULL;
+	home_uri = nautilus_get_home_directory_uri ();
+
+	if (g_strcmp0 (uri, (const char *)home_uri) == 0) {
+		display_name = g_strdup (_("Home"));
+	}
+
+	g_free (home_uri);
+	g_free ((char *)uri);
+
+	return display_name;
+}
+
 char *
 nautilus_bookmark_get_name (NautilusBookmark *bookmark)
 {
-	g_return_val_if_fail(NAUTILUS_IS_BOOKMARK (bookmark), NULL);
+	char *uri;
+	char *name;
+
+	g_return_val_if_fail (NAUTILUS_IS_BOOKMARK (bookmark), NULL);
 
+	if (bookmark->details->has_custom_name) {
+		return g_strdup (bookmark->details->name);
+	}
+
+	uri = nautilus_bookmark_get_uri (bookmark);
+	name = get_special_display_name_for_uri (uri);
+
+	if (name) {
+		return name;
+	}
 	return g_strdup (bookmark->details->name);
 }
 
