diff --git a/libnautilus-private/nautilus-directory-async.c b/libnautilus-private/nautilus-directory-async.c
index f40421e..1ff41e0 100644
--- a/libnautilus-private/nautilus-directory-async.c
+++ b/libnautilus-private/nautilus-directory-async.c
@@ -803,6 +803,7 @@ set_file_unconfirmed (NautilusFile *file, gboolean unconfirmed)
 
 static gboolean show_hidden_files = TRUE;
 static gboolean show_backup_files = TRUE;
+static char** hidden_file_patterns = NULL;
 
 static void
 show_hidden_files_changed_callback (gpointer callback_data)
@@ -816,11 +817,35 @@ show_backup_files_changed_callback (gpointer callback_data)
 	show_backup_files = eel_preferences_get_boolean (NAUTILUS_PREFERENCES_SHOW_BACKUP_FILES);
 }
 
+static void
+hidden_file_patterns_changed_callback (gpointer callback_data)
+{
+	if( hidden_file_patterns != NULL ) {
+		g_strfreev (hidden_file_patterns);
+	}
+	hidden_file_patterns = eel_preferences_get_string_array (NAUTILUS_PREFERENCES_HIDDEN_FILE_PATTERNS);
+}
+
+static gboolean
+file_pattern_is_ignored (const char* name)
+{
+	char** p;
+	for (p = hidden_file_patterns; *p != NULL; ++p )
+	{
+		if (g_pattern_match_simple(*p, name))
+		{
+			return TRUE;
+		}
+	}
+	return FALSE;
+}
+
 static gboolean
 should_skip_file (NautilusDirectory *directory, GFileInfo *info)
 {
 	static gboolean show_hidden_files_changed_callback_installed = FALSE;
 	static gboolean show_backup_files_changed_callback_installed = FALSE;
+	static gboolean hidden_file_patterns_changed_callback_installed = FALSE;
 
 	/* Add the callback once for the life of our process */
 	if (!show_hidden_files_changed_callback_installed) {
@@ -844,8 +869,20 @@ should_skip_file (NautilusDirectory *directory, GFileInfo *info)
 		show_backup_files_changed_callback (NULL);
 	}
 
+	/* Add the callback once for the life of our process */
+	if (!hidden_file_patterns_changed_callback_installed) {
+		eel_preferences_add_callback (NAUTILUS_PREFERENCES_HIDDEN_FILE_PATTERNS,
+					      hidden_file_patterns_changed_callback,
+					      NULL);
+		hidden_file_patterns_changed_callback_installed = TRUE;
+		
+		/* Peek for the first time */
+		hidden_file_patterns_changed_callback (NULL);
+	}
+
 	if (!show_hidden_files &&
 	    (g_file_info_get_is_hidden (info) ||
+	     (hidden_file_patterns != NULL && file_pattern_is_ignored (g_file_info_get_name (info))) ||
 	     (directory != NULL && directory->details->hidden_file_hash != NULL &&
 	      g_hash_table_lookup (directory->details->hidden_file_hash,
 				   g_file_info_get_name (info)) != NULL))) {
diff --git a/libnautilus-private/nautilus-file.c b/libnautilus-private/nautilus-file.c
index fb6d92b..2a89d16 100644
--- a/libnautilus-private/nautilus-file.c
+++ b/libnautilus-private/nautilus-file.c
@@ -2786,10 +2786,27 @@ nautilus_file_is_backup_file (NautilusFile *file)
 static gboolean
 is_file_hidden (NautilusFile *file)
 {
-	return file->details->directory->details->hidden_file_hash != NULL &&
+	if( file->details->directory->details->hidden_file_hash != NULL &&
 		g_hash_table_lookup (file->details->directory->details->hidden_file_hash,
-				     eel_ref_str_peek (file->details->name)) != NULL;
-	
+				     eel_ref_str_peek (file->details->name)) != NULL ) {
+		return TRUE;
+	}
+	gboolean hidden = FALSE;
+	char** hidden_file_patterns = eel_preferences_get_string_array (NAUTILUS_PREFERENCES_HIDDEN_FILE_PATTERNS);
+	if (hidden_file_patterns != NULL)
+	{
+		char** p;
+		for (p = hidden_file_patterns; *p != NULL; ++p )
+		{
+			if (g_pattern_match_simple(*p, file->details->name))
+			{
+				hidden = TRUE;
+				break;
+			}
+		}
+		g_strfreev (hidden_file_patterns);
+	}
+	return hidden;
 }
 
 /**
diff --git a/libnautilus-private/nautilus-global-preferences.h b/libnautilus-private/nautilus-global-preferences.h
index 3a3fe32..c00dc0e 100644
--- a/libnautilus-private/nautilus-global-preferences.h
+++ b/libnautilus-private/nautilus-global-preferences.h
@@ -68,6 +68,7 @@ G_BEGIN_DECLS
 /* Display  */
 #define NAUTILUS_PREFERENCES_SHOW_HIDDEN_FILES  		"/desktop/gnome/file_views/show_hidden_files"
 #define NAUTILUS_PREFERENCES_SHOW_BACKUP_FILES  		"/desktop/gnome/file_views/show_backup_files"
+#define NAUTILUS_PREFERENCES_HIDDEN_FILE_PATTERNS 		"/desktop/gnome/file_views/hidden_file_patterns"
 #define NAUTILUS_PREFERENCES_SHOW_ADVANCED_PERMISSIONS		"preferences/show_advanced_permissions"
 #define NAUTILUS_PREFERENCES_DATE_FORMAT			"preferences/date_format"
 
