diff -pruN nautilus-2.26.2/libnautilus-private/Makefile.am nautilus-2.26.2+/libnautilus-private/Makefile.am
--- nautilus-2.26.2/libnautilus-private/Makefile.am	2009-03-17 05:20:25.000000000 -0400
+++ nautilus-2.26.2+/libnautilus-private/Makefile.am	2009-04-27 23:31:49.000000000 -0400
@@ -32,6 +32,7 @@ libnautilus_private_la_LIBADD =		\
 	$(top_builddir)/eel/libeel-2.la \
 	$(top_builddir)/libnautilus-extension/libnautilus-extension.la \
 	$(CORE_LIBS)			\
+	-lvisualid			\
 	$(NULL)
 
 marshal_sources = \
diff -pruN nautilus-2.26.2/libnautilus-private/Makefile.in nautilus-2.26.2+/libnautilus-private/Makefile.in
--- nautilus-2.26.2/libnautilus-private/Makefile.in	2009-04-13 13:55:01.000000000 -0400
+++ nautilus-2.26.2+/libnautilus-private/Makefile.in	2009-04-27 23:31:49.000000000 -0400
@@ -444,6 +444,7 @@ libnautilus_private_la_LIBADD = \
 	$(top_builddir)/eel/libeel-2.la \
 	$(top_builddir)/libnautilus-extension/libnautilus-extension.la \
 	$(CORE_LIBS)			\
+	-lvisualid			\
 	$(NULL)
 
 marshal_sources = \
diff -pruN nautilus-2.26.2/libnautilus-private/nautilus-file.c nautilus-2.26.2+/libnautilus-private/nautilus-file.c
--- nautilus-2.26.2/libnautilus-private/nautilus-file.c	2009-04-01 09:42:45.000000000 -0400
+++ nautilus-2.26.2+/libnautilus-private/nautilus-file.c	2009-04-27 23:54:10.000000000 -0400
@@ -59,6 +59,7 @@
 #include <glib/gstdio.h>
 #include <gio/gio.h>
 #include <glib.h>
+#include <VisualIDs/paths.h>
 #include <libnautilus-extension/nautilus-file-info.h>
 #include <libxml/parser.h>
 #include <pwd.h>
@@ -66,6 +67,7 @@
 #include <sys/time.h>
 #include <time.h>
 #include <unistd.h>
+#include <sys/types.h>
 #include <sys/stat.h>
 
 #ifdef HAVE_SELINUX
@@ -3562,8 +3564,9 @@ nautilus_file_get_icon (NautilusFile *fi
 		modified_size = size * cached_thumbnail_size / NAUTILUS_ICON_SIZE_STANDARD; 
 	}
 
-	if (flags & NAUTILUS_FILE_ICON_FLAGS_USE_THUMBNAILS &&
+	if (/* flags & NAUTILUS_FILE_ICON_FLAGS_USE_THUMBNAILS && */
 	    nautilus_file_should_show_thumbnail (file)) {
+	/* XXX need to use VisualIDs for broken symlinks too? */
 		if (file->details->thumbnail) {
 			int w, h, s;
 			double scale;
@@ -3602,8 +3605,29 @@ nautilus_file_get_icon (NautilusFile *fi
 			   !file->details->is_thumbnailing &&
 			   (!file->details->thumbnailing_failed ||
 			    !nautilus_has_valid_failed_thumbnail (file))) {
+ 			struct stat visualid_stat;
 			if (nautilus_can_thumbnail (file)) {
-				nautilus_create_thumbnail (file);
+				nautilus_create_thumbnail (file, NAUTILUS_TNTYPE_THUMBNAIL);
+			} else if (stat (visualid_cachedir (), &visualid_stat) == 0) {
+				struct stat statbuf;
+				char *file_uri = nautilus_file_get_uri (file);
+				char *icon_path = visualid_path_for_file (file_uri);
+				int visualid_exists = (stat (icon_path, &statbuf) == 0);
+				g_free (file_uri);
+
+				if (visualid_exists) {
+					GFile *icon_file = g_file_new_for_path (icon_path);
+					gicon = g_file_icon_new (icon_file);
+					icon = nautilus_icon_info_lookup (gicon, size);
+					g_object_unref (gicon);
+					g_object_unref (icon_file);
+					g_free (icon_path);
+					return icon;
+				}
+				else {
+					g_free (icon_path);
+					nautilus_create_thumbnail (file, NAUTILUS_TNTYPE_VISUALID);
+				}
 			}
 		}
 	}
@@ -5725,6 +5749,9 @@ nautilus_file_get_emblem_icons (Nautilus
 	char *keyword;
 	int i;
 	GIcon *icon;
+
+	char *file_uri, *visualid_path;
+	struct stat visualid_stat;
 	
 	if (file == NULL) {
 		return NULL;
@@ -5772,6 +5799,27 @@ nautilus_file_get_emblem_icons (Nautilus
 		icons = g_list_prepend (icons, icon);
 	}
 	
+	/* VisualID `branding'--file-type is auxiliary info,
+	   show type-indicators as emblems:  */
+
+        file_uri = nautilus_file_get_uri (file);
+        visualid_path = visualid_path_for_file (file_uri);
+        g_free (file_uri);
+
+	if (!nautilus_file_get_custom_icon (file) &&
+	    !NAUTILUS_IS_DESKTOP_ICON_FILE(file) &&
+	    !nautilus_file_is_nautilus_link (file) &&
+	    visualid_path && stat (visualid_path, &visualid_stat) == 0) {
+		/* Only for files for which it's useful,
+		   and only if the VisualID icon is ready */
+		/* XXX: how do we make the folder-icon `open' when
+		   it's prelit as a drop-target? */
+
+		icons = g_list_prepend
+			(icons,
+			 nautilus_file_get_gicon (file, NAUTILUS_FILE_ICON_FLAGS_NONE));
+	}
+
 	eel_g_list_free_deep (keywords);
 	
 	return icons;
diff -pruN nautilus-2.26.2/libnautilus-private/nautilus-thumbnails.c nautilus-2.26.2+/libnautilus-private/nautilus-thumbnails.c
--- nautilus-2.26.2/libnautilus-private/nautilus-thumbnails.c	2009-03-12 08:18:19.000000000 -0400
+++ nautilus-2.26.2+/libnautilus-private/nautilus-thumbnails.c	2009-04-27 23:39:48.000000000 -0400
@@ -67,6 +67,7 @@ typedef struct {
 	char *image_uri;
 	char *mime_type;
 	time_t original_file_mtime;
+	NautilusThumbnailType thumbnail_type;
 } NautilusThumbnailInfo;
 
 struct NautilusThumbnailAsyncLoadHandle {
@@ -819,18 +820,21 @@ nautilus_has_valid_failed_thumbnail (Nau
 }
 
 void
-nautilus_create_thumbnail (NautilusFile *file)
+nautilus_create_thumbnail (NautilusFile *file, NautilusThumbnailType type)
 {
 	time_t file_mtime = 0;
 	NautilusThumbnailInfo *info;
 	NautilusThumbnailInfo *existing_info;
 	GList *existing, *node;
 
-	nautilus_file_set_is_thumbnailing (file, TRUE);
+	if (type == NAUTILUS_TNTYPE_THUMBNAIL) {
+		nautilus_file_set_is_thumbnailing (file, TRUE);
+	}
 
 	info = g_new0 (NautilusThumbnailInfo, 1);
 	info->image_uri = nautilus_file_get_uri (file);
 	info->mime_type = nautilus_file_get_mime_type (file);
+	info->thumbnail_type = type;
 	
 	/* Hopefully the NautilusFile will already have the image file mtime,
 	   so we can just use that. Otherwise we have to get it ourselves. */
@@ -990,6 +994,20 @@ thumbnail_thread_start (gpointer data)
 			   info->image_uri);
 #endif
 
+ 		if (info->thumbnail_type == NAUTILUS_TNTYPE_VISUALID) {
+ 
+ 			pid_t mkvisualid = fork ();
+ 			if (mkvisualid == 0) {
+ 				execlp ("mkvisualid", "mkvisualid",
+ 					"--autocache",
+ 					info->image_uri,
+ 					NULL);
+ 				sleep (2);
+ 				exit (1);
+ 			}
+ 
+ 			waitpid (mkvisualid, NULL, 0);
+ 		} else {
 		pixbuf = gnome_desktop_thumbnail_factory_generate_thumbnail (thumbnail_factory,
 									     info->image_uri,
 									     info->mime_type);
@@ -1005,6 +1023,7 @@ thumbnail_thread_start (gpointer data)
 										 info->image_uri,
 										 current_orig_mtime);
 		}
+		}
 		/* We need to call nautilus_file_changed(), but I don't think that is
 		   thread safe. So add an idle handler and do it from the main loop. */
 		g_idle_add_full (G_PRIORITY_HIGH_IDLE,
diff -pruN nautilus-2.26.2/libnautilus-private/nautilus-thumbnails.h nautilus-2.26.2+/libnautilus-private/nautilus-thumbnails.h
--- nautilus-2.26.2/libnautilus-private/nautilus-thumbnails.h	2008-09-14 08:14:27.000000000 -0400
+++ nautilus-2.26.2+/libnautilus-private/nautilus-thumbnails.h	2009-04-27 23:31:50.000000000 -0400
@@ -43,8 +43,15 @@ typedef void (* NautilusThumbnailAsyncLo
 #define NAUTILUS_THUMBNAIL_FRAME_RIGHT 6
 #define NAUTILUS_THUMBNAIL_FRAME_BOTTOM 6
 
+typedef enum {
+	NAUTILUS_TNTYPE_THUMBNAIL,
+	NAUTILUS_TNTYPE_VISUALID
+} NautilusThumbnailType;
+
+
 /* Returns NULL if there's no thumbnail yet. */
-void       nautilus_create_thumbnail                (NautilusFile *file);
+void       nautilus_create_thumbnail                (NautilusFile *file,
+						     NautilusThumbnailType type);
 gboolean   nautilus_can_thumbnail                   (NautilusFile *file);
 gboolean   nautilus_has_valid_failed_thumbnail      (NautilusFile *file);
 gboolean   nautilus_thumbnail_is_mimetype_limited_by_size
