Index: src/Core/Banshee.Core/Banshee.Collection/TrackInfo.cs
===================================================================
--- src/Core/Banshee.Core/Banshee.Collection/TrackInfo.cs	(revision 4271)
+++ src/Core/Banshee.Core/Banshee.Collection/TrackInfo.cs	(working copy)
@@ -208,7 +208,17 @@
                     : title; 
             } 
         }     
+
+        public string DisplayGenre { 
+            get { 
+                string genre = Genre == null ? null : Genre.Trim ();
+                return String.IsNullOrEmpty (genre) 
+                    ? Catalog.GetString ("Unknown Genre") 
+                    : genre; 
+            } 
+        }     
         
+        
         public virtual string ArtworkId { 
             get { return CoverArtSpec.CreateArtistAlbumId (AlbumArtist, AlbumTitle); }
         }
Index: src/Core/Banshee.Core/Banshee.Collection/ITrackInfo.cs
===================================================================
--- src/Core/Banshee.Core/Banshee.Collection/ITrackInfo.cs	(revision 4271)
+++ src/Core/Banshee.Core/Banshee.Collection/ITrackInfo.cs	(working copy)
@@ -36,6 +36,7 @@
         string DisplayArtistName { get; }
         string DisplayAlbumTitle { get; }
         string DisplayTrackTitle { get; }
+        string DisplayGenre { get; }
         
         int TrackNumber { get; }
         int TrackCount { get; }
Index: src/Core/Banshee.Core/Banshee.Configuration.Schema/LibrarySchema.cs
===================================================================
--- src/Core/Banshee.Core/Banshee.Configuration.Schema/LibrarySchema.cs	(revision 4271)
+++ src/Core/Banshee.Core/Banshee.Configuration.Schema/LibrarySchema.cs	(working copy)
@@ -46,8 +46,9 @@
             "Library Folder Pattern",
             "Format for creating a track folder inside the library. Do not create an absolute path. " +
                 "Location here is relative to the Banshee music directory. See LibraryLocation. Legal tokens: " +
-                "%artist%, %album%, %title%, %track_number%, %track_count%, %track_number_nz% (No prefixed zero), " + 
-                "%track_count_nz% (No prefixed zero), %path_sep% (portable directory separator (/))."
+                "%artist%, %album%, %genre%, %title%, %track_number%, %track_count%, " +
+                "%track_number_nz% (No prefixed zero), %track_count_nz% (No prefixed zero), " +
+                "%path_sep% (portable directory separator (/))."
         );
 
         public static readonly SchemaEntry<string> FilePattern = new SchemaEntry<string>(
@@ -55,8 +56,8 @@
             Banshee.Base.FileNamePattern.DefaultFile,
             "Library File Pattern",
             "Format for creating a track filename inside the library. Do not use path tokens/characters here. " +
-                "See LibraryFolderPattern. Legal tokens: %artist%, %album%, %title%, %track_number%, %track_count%, " +
-                "%track_number_nz% (No prefixed zero), %track_count_nz% (No prefixed zero)."
+                "See LibraryFolderPattern. Legal tokens: %artist%, %album%, %genre%, %title%, %track_number%, " +
+                "%track_count%, %track_number_nz% (No prefixed zero), %track_count_nz% (No prefixed zero)."
         );
 
         public static readonly SchemaEntry<int> SortColumn = new SchemaEntry<int>(
Index: src/Core/Banshee.Core/Banshee.Base/FileNamePattern.cs
===================================================================
--- src/Core/Banshee.Core/Banshee.Base/FileNamePattern.cs	(revision 4271)
+++ src/Core/Banshee.Core/Banshee.Base/FileNamePattern.cs	(working copy)
@@ -88,7 +88,12 @@
                 delegate (ITrackInfo t, object r) {
                     return Escape (t == null ? (string)r : t.DisplayArtistName);
             });
-            
+                        
+            AddConversion ("genre", Catalog.GetString ("Genre"),  
+                delegate (ITrackInfo t, object r) {
+                    return Escape (t == null ? (string)r : t.DisplayGenre);
+            });
+
             AddConversion ("album", Catalog.GetString ("Album"),  
                 delegate (ITrackInfo t, object r) {
                     return Escape (t == null ? (string)r : t.DisplayAlbumTitle);
