• 1(current)
  • 2
  • 3
  • 4
  • 5
  • 9
HOW-TO customize the home menu with custom categories
#1
Thumbs Up 
“I am a big fan of Anime, how can I create a home menu item for it? I don’t like how it sits in the same list as my TV Shows”. “I have a lot of Disney movies for my kids. How can I make it so they appear in a different list than my regular movies?”.

Many have asked these questions and many others have answered. But to my knowledge no answer explained things, in detail, from A to Z. I too have looked around the forum on different occasions trying to find an easy answer. But it always seemed too much of a hassle and I quickly gave up. Though one time I persevered, and managed to set up my XBMC exactly the way I want it. And it’s surprisingly easy! You just need to know how.
I’ll do my best and try to explain clean and simple how I did things. There might be other ways, but this one has worked for me. In my setup I used XBMC Live with the Transparency skin, though i'll try to keep things as general as possible. Some stuff will be different however, depending on your OS and skin.

My wishes
What I wanted was to create a home menu with the following items:
  • Anime: For my many anime series. I’m a big fan, and didn’t like how these were showing in the TV Shows menu.
  • Anime Movies: Yes, a separate folder for the anime movies.
  • Comedy: Stand op comedy shows, etc… . “And another left turn!!!” anyone?
  • Documentaries: Wonders of the solar system, and the depths of the ocean!
  • Movies: My regular movies. Not anime movies!
  • Music: The standard music library.
  • Pictures: Also standard.
  • TV Shows: TV Shows like Top Gear and House. No Anime here!
  • Other: Ever seen Cirque Du Soleil perform? They are awesome.
How-To
Again, these are the steps I used. There are different ways.

I’ll mostly be talking about the Anime, Anime Movies, Movies and TV Shows folders. These are easy to understand and things might get complicated with the other stuff. For example documentaries could be both movies, or a 5 episode show.

1. Folder creation
Let’s start off by creating the proper folders for each category. This makes it easy later on to be able to select which media files you want to show in which menu.

I have files on the local drive of my player, but most of it is located on a media server. On both systems I created a folder for each category (Anime, Anime Movies, Comedy, Documentaries, Movies, Music, Pictures, TV Shows, Other). I made all folders on the local drive in a common directory “/share/”.

Secondly, we also need different folders to hold our background images for each categorie. A different set of backdrops (or wallpapers) for anime, anime movies, movies, tv shows, …). In the same “/share/” folder, I also created a folder called “backdrops”, and again, inside that folder I created a folder for each category.
In the end, on my HTPC I have the following folders:
  • /
    • share/
      • Anime/
      • Anime Movies/
      • backdrops/
        • Anime/
        • Anime Movies/
        • Comedy/
        • Documentaries/
        • Movies/
        • Music/
        • Pictures/
        • Other/
        • Settings/
        • TV Shows/
      • Comedy/
      • Documentaries/
      • Movies/
      • Music/
      • Pictures/
      • Other/
      • TV Shows/


2. Sources
After we created the folders, we must add them to our XBMC sources. Give all sources a meaningful name. For example, my local folders were named exactly as the source folder (Anime, Anime Movies, Movies, etc…), and for the server folders, I simply added “server “ in front of them (Server Anime, Server Anime Movies, etc…). Assign the proper media type and scraper to them.

Intermission 1
As it is now we actually have a basic setup and configuration of XBMC. In the default Movies menu, I now found both regular and anime movies. In the default TV Shows menu I had the regular series and my anime series. Time to change that!

3. Smart Playlists
Smart playlist are what makes most of the magic happen. A better name for them would be “Playlist Filters” as they are the ones who filter the list and show only what you want them to show.
These playlists can be created through the XBMC user interface but as the exact instructions depend on what skin you use I’ll be explaining how the create them using a text editor.

First you have to know where your XBMC userdata folder is located. The default folder when using XBMC Live would be “~/.xbmc/userdata/”. When choosing another version of XBMC, this might be different. Inside the userdata folder, there will be a folder called playlists, and inside that folder you should find 3 folders, being “mixed”, “music” and “videos”.
These are default folders where XBMC will be looking for playlists. You don’t HAVE to use these folders, but I did. Not using these will mean some paths in later steps will be different.

Inside the videos folder, I created 4 files: “Anime.xsp”, “Anime Movies.xsp”, “Movies.xsp”, “TV Shows.xsp”. “.xsp” is the default XBMC extention for smartlists. Then, using a simple file editor, I edited the files with the following:
Anime.xsp
Code:
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<smartplaylist type="tvshows">
    <name>Anime</name>
    <match>one</match>
   <rule field="path" operator="startswith">/share/Anime/</rule>
    <rule field="path" operator="startswith">smb://MEDIASERVER/Anime/</rule>
    <order direction="ascending">tvshow</order>
</smartplaylist>

Now, some explanation:
  • <?xml blablabla>: something you shouldn’t worry about. It’s default. Has to be there. Shouldn’t be changed.
  • <smartplaylist type="tvshows">: This will decide what kind of filter rules you can use. For example filtering on the amount of “episodes” won’t be possible for “movies”. For more information, look at the wiki.
  • <name>Anime</name>: a name for your smartplaylist. For easiness, use the same name as the custom menu you want.
  • <match>one</match>: this one could be “one” or “all”. As filters can have multiple “criteria” a media item could/should match, this will decide if it has to match just 1 of the criteria, or all of them. In this example it had to use “one”. So any media that is located in the folders “/share/Anime/” OR on the “Anime” folder on my server, will be displayed. If you’d want to show only the HD movies from a certain folder, you could use a rule for the path, and a rule for the resolution, and use “all” as matchtype. It’s not directly possible to combine the “one” and “all” match rule in a single smart playlist. So filtering for only HD movies which are in path A OR path B is not possible. (Well it is, but you have to use some special tricks, which is beyond the scope of this article).
  • <rule field="path" operator="startswith">/share/Anime/</rule>:
    These are the rules the media items should comply with. This filter basically only shows the media items that are located in those folders.
  • <order direction="ascending">tvshow</order>:
    In case you want to display the list in some special order, you can use this tag. “tvshow” is the for the name of the show. So basically I’m ordering my anime alphabetically.
Anime Movies.xsp
Code:
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<smartplaylist type="movies">
    <name>Anime Movies</name>
    <match>all</match>
    <rule field="path" operator="startswith">/share/Anime Movies/</rule>
    <rule field="path" operator="startswith">smb://MEDIASERVER/Anime Movies/</rule>
    <order direction="ascending">title</order>
</smartplaylist>

Movies.xsp
Code:
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<smartplaylist type="movies">
    <name>Movies</name>
    <match>one</match>
    <rule field="path" operator="startswith">/share/Movies/</rule>
    <rule field="path" operator="startswith">smb://MEDIASERVER/Movies/</rule>
    <order direction="ascending">title</order>
</smartplaylist>
TV Shows.xsp
Code:
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<smartplaylist type="tvshows">
    <name>TV Shows</name>
    <match>one</match>
    <rule field="path" operator="startswith">/share/Series/</rule>
    <rule field="path" operator="startswith">smb://MEDIASERVER/TV Shows/</rule>
    <order direction="ascending">tvshow</order>
</smartplaylist>
Intermission 2
Yes, only 1 topic covered and back into an intermission. The thing is, until now things were pretty general. However, starting from now it will depend on what skin you are using. We made our smartlists but now we need ways of showing these in our home screen. The usual way is to create “Favorites” of these smartlists, and then add those favorites to the homescreen. This is something many skins support. But it’s a tedious job, and doesn’t allow for that much customization. For example in the Transparancy skin, you can only add 3 at most. And they appear at the end of the menu. So you can’t show the home menu items alphabetically or whatever order you want them in. Another thing that lacked was the support of submenus. In Transparancy you could add them, but not the ones I wanted.

The way I did it was to manually edit the skin files. It’s a bit more “advanced”, but you can make it exactly the way you want. The downside is if the skin gets updated, you might have to reapply all your changes again.
Reply
#2
4. Preparing the skin, Transpancy!!
Again: From now on, things talk about the “Transparancy!” skin. This will be different depending on what skin you use!

In XBMC, go to Settings -> Skin settings -> Menu. You get a whole list of what items XBMC should or should not show. I only wanted the default “Pictures”, “Music” and “Settings” displayed. For all other categories I would create my own customized menu’s or simply not use them at all (for example, I never play any dvd’s or cd’s).

5. Editing the skin, Transparancy!
The file we’ll be editing is called “Includes_Home.xml”, and is located in “~/.xbmc/addons/skin.transparency/720p/” on my XBMC Live installation. The file location could be different on your system however. As things will be getting tricky from now on, making mistakes is possible. So it’s best to create a backup of your file first. Make a copy, give it a meaningful name like “Includes_Home.bak”, and then open the “Includes_Home.xml” file in a text editor.

Find the line with the following text:
Code:
<include name="HorizontalMenu">
or
Code:
<include name="VerticalMenu">
depending on what menu you prefer. For your information, choosing between horizontal or vertical is done in Settings->Skin settings->Home Window->Horizontal home menu.

After you found the line, scroll down until you see the lines:
Code:
</content>
</control>
Above </content> you should see something similar to
Code:
<item id="16">
<label>$INFO[Skin.String(Menu_Custom3_Label)]</label>
<onclick>$INFO[Skin.String(Menu_Custom3_Path)]</onclick>
<icon>special://skin/backgrounds/settings.jpg</icon>
<thumb>$INFO[Skin.String(Home_Custom_Back_Custom3_Folder)]</thumb>
<visible>Skin.HasSetting(Menu_Custom3)</visible>
</item>

Let’s start with creating our custom menu entry’s. They speak for themselves, so I won’t be explain this in detail:
Between </item> and </content>, add the following, and pay attention to the “item id”, always incrementing by 1:
Code:
<item id="17">
<label>Anime</label>
<onclick>ActivateWindow(10025,"special://profile/playlists/video/Anime.xsp", return)</onclick>
<icon>/share/backdrops/Anime/</icon>
</item>
<item id="18">
<label>Anime Movies</label>
<onclick>ActivateWindow(10025,"special://profile/playlists/video/Anime Movies.xsp", return)</onclick>
<icon>/share/backdrops/Anime Movies/</icon>
</item>
<item id="19">
<label>Comedy</label>
<onclick>ActivateWindow(10025,"special://profile/playlists/video/Comedy.xsp", return)</onclick>
<icon>/share/backdrops/Comedy/</icon>
</item>
<item id="20">
<label>Documentaries</label>
<onclick>ActivateWindow(10025,"special://profile/playlists/video/Documentaries.xsp", return)</onclick>
<icon>/share/backdrops/Documentaries/</icon>
</item>
<item id="21">
<label>Movies</label>
<onclick>ActivateWindow(10025,"special://profile/playlists/video/Movies.xsp", return)</onclick>
<icon>/share/backdrops/Movies/</icon>
</item>
<item id="22">
<label>TV Shows</label>
<onclick>ActivateWindow(10025,"special://profile/playlists/video/TV Shows.xsp", return)</onclick>
<icon>/share/backdrops/TV Shows/</icon>
</item>
<item id="23">
<label>Other</label>
<onclick>ActivateWindow(10025,"special://profile/playlists/video/Other.xsp", return)</onclick>
<icon>/share/backdrops/Other/</icon>
</item>
Now we’ve created our custom menu items and linked them to our smartlists. If you reload the skin (in skin settings, or by rebooting) you should be able to see and use them. If not, you probably made a mistake somewhere.

But we’re not done yet. I dislike the order they are in. As we are using the standard “Music”, “Pictures” and “Settings” , they will be displayed first. I want them alphabetically, with the exception of “Others” and “Settings”, I want those in the back.

Scroll up some and cut the following code (pay attention, 2 times item id 6):
Code:
<item id="6">
<label>2</label>
<onclick>ActivateWindow(MusicLibrary)</onclick>
<include condition="!Skin.HasSetting(Home_Music_Fanart_Background)">home-music-background</include>
<include condition="Skin.HasSetting(Home_Music_Fanart_Background)">home-music-background-fanart</include>
<visible>!Skin.HasSetting(Menu_Music) + Library.HasContent(Music)</visible>
</item>
<item id="6">
<label>2</label>
<onclick>ActivateWindow(MusicFiles)</onclick>
<include condition="!Skin.HasSetting(Home_Music_Fanart_Background)">home-music-background</include>
<include condition="Skin.HasSetting(Home_Music_Fanart_Background)">home-music-background-fanart</include>
<visible>!Skin.HasSetting(Menu_Music) + !Library.HasContent(Music)</visible>
</item>
<item id="7">
<label>1</label>
<onclick>ActivateWindow(Pictures)</onclick>
<icon>special://skin/backgrounds/pictures.jpg</icon>
<thumb>$INFO[Skin.String(Home_Custom_Back_Pictures_Folder)]</thumb>
<visible>!Skin.HasSetting(Menu_Pictures)</visible>
</item>
And paste it in between item 21 and 22.

Next, scroll up again, and cut the code for the settings:
Code:
<item id="12">
<label>5</label>
<onclick>ActivateWindow(Settings)</onclick>
<icon>special://skin/backgrounds/settings.jpg</icon>
<thumb>$INFO[Skin.String(Home_Custom_Back_Settings_Folder)]</thumb>
<visible>!Skin.HasSetting(Menu_Settings)</visible>
</item>
And paste it at the end, behind our “other” group.
Again, reload the skin or reboot, to check on our changes.

We’re almost there, but I’m still not happy yet. By disabling the default “movies” menu item, I lost access to the sub menu of “files”. And that item is important to manually update the library or add sources. What I choose to do was to add 2 items to my “settings” sub menu, for both the music and video files.

Scroll down until you see the following code:
Code:
<control type="fixedlist" id="8001">
<visible>!Skin.HasSetting(Menu_Settings_Sub) + Container(5040).HasFocus(12)</visible>
<include condition="Skin.HasSetting(HorizontalHomeMenu)">HorizontalSubMenuLayout</include>
<include condition="!Skin.HasSetting(HorizontalHomeMenu)">VerticalSubMenuLayout</include>
<content>
Below the <content> line, add the following:
Code:
<item id="8118">
<description>Menu Video Sub Files</description>
<label>Video Files</label>
<onclick>ActivateWindow(VideoFiles)</onclick>
</item>
<item id="8119">
<description>Menu Music Sub Files</description>
<label>Music Files</label>
<onclick>ActivateWindow(MusicFiles)</onclick>
</item>
And now we’re finally done. A home menu exactly the way I wanted it!

Finale
I hope this guide was helpful. It would’ve saved me some time. Should you have any questions or find any mistakes, do tell. And if you found this information useful, leave a thank you message. It might make me write more how-to’s!

EDIT: 24/04/2011: more info on how to create your own sub menu found here : http://forum.xbmc.org/showthread.php?p=7...post782129
Reply
#3
Thank you for the tut! My wife and I are both anime fans, and I thought this would be great for us. I use the Aeon 65 skin, and it does not have the includes-home.xml file. I also went to the Trasparent skin and found the xml file but it doesn't have <include name="HorizontalMenu"> or <include name="VerticalMenu">. I am not using xbmc live, I am us xbmc 10.0 intalled on windows.

Would you be able to help me?

Furron
Reply
#4
wicked_n_raw Wrote:I also went to the Trasparent skin and found the xml file but it doesn't have <include name="HorizontalMenu"> or <include name="VerticalMenu">. I am not using xbmc live, I am us xbmc 10.0 intalled on windows.

Would you be able to help me?

Furron

Very odd. Did you install the skin through the add-on manager?

Edit: as for Aeon65. I just had a quick look at the files of that addon, and it seems the file you'll need to be editing is called "Includes_MainMenu.xml". I haven't tried it, so this is a bit of a guess, but look for
Code:
<include name="MainMenu">
I'm not 100% sure as there was also something called <include name="VirtualMainMenu"> that looks very identical.

then scroll down to
Code:
</content>
</control>
And try adding the items before that. Take in mind the item id's. They will be higher than for the transparancy skin. Should be higher than 50.

Don't forget to make a backup of the file first. Let me know if it worked or if you need any further assistance.
Reply
#5
Thank you, I will try that when I get home from work!
Reply
#6
Myth,
Thanks for your solution.
I haven't used it yet as I am still tinkering. I have downloaded the Transparancy skin, which I am happy to say I like the look of, so that saves me trying to adapt your method to Confluence or one of the other skins.
Just a few questions as I have.
As you add new content to the various source folders, do the playlists automatically pick them up?
Is there any problems with the library and scanning content?
How do you scan in your more obscure files in to the library? Did you create nfo files manually or have another solution?
Also is there anyway that you can lock or password protect certain categories?
Thanks in advance.
JA
Reply
#7
Ja4220 Wrote:As you add new content to the various source folders, do the playlists automatically pick them up?
Yes, as soon as they have been scanned they will appear in the proper category. What the playlists do is simply filter the regular library with the defined rules. So as soon as you update your library, so will the playlists.

Ja4220 Wrote:Is there any problems with the library and scanning content?
Nope, using these playlists changes nothing. Except that i must now update my library by going to settings->video files, instead of movies->files. But in the end I get the same window. And if you have automatic library updates, you don't even have to do that.

Ja4220 Wrote:How do you scan in your more obscure files in to the library? Did you create nfo files manually or have another solution?
Suppose it depends on what kind of obscure files you are talking about. For anime shows that aren't found on thetvdb.com, i go and add them on the site. If it are movies that actually don't belong on those sites I'm not sure what I'd do. Didn't encounter these situations yet.

Ja4220 Wrote:Also is there anyway that you can lock or password protect certain categories?
When I was trying to find out how I could create these categories I did come across many people recommending to use different profiles instead. Using profiles you can deffinatly use a password. Don't know about any tricks for the solution I used though. It's not something I have looked into.
Reply
#8
Question 
Myth ... is this hack still working ?

i just installed Transparency and add the the hack
but only thing i get is a black screen with the logo on the left top and the bar at the right top hook :p

what is not really clear to me ....

this -> <icon>/share/backdrops/Comedy/</icon>
has to be identical to the play list name ?

here is my hack

Code:
<item id="17">
<label>Movies Dutch</label>
<onclick>ActivateWindow(10025,"special://profile/playlists/video/Movies.Dutch.xsp", return)</onclick>
<icon>/share/backdrops/Movies Dutch/</icon>
</item>
<item id="18">
<label>Movies English</label>
<onclick>ActivateWindow(10025,"special://profile/playlists/video/Movies.English.xsp", return)</onclick>
<icon>/share/backdrops/Movies English/</icon>
</item>
<item id="19">
<label>Movies French</label>
<onclick>ActivateWindow(10025,"special://profile/playlists/video/Movies.French.xsp", return)</onclick>
<icon>/share/backdrops/Movies French/</icon>
</item>
<item id="20">
<label>Movies Th + Eng</label>
<onclick>ActivateWindow(10025,"special://profile/playlists/video/Movies.TH.Eng.xsp", return)</onclick>
<icon>/share/backdrops/Movies Th + Eng/</icon>
</item>
<item id="21">
<label>Movies Thai</label>
<onclick>ActivateWindow(10025,"special://profile/playlists/video/Movies.Thai.xsp", return)</onclick>
<icon>/share/backdrops/Movies Thai/</icon>
</item>

any issues you see ?
Reply
#9
Nevermind

i was missing a </item> line Tongue tried this late at night and today with a fresh pair of eyes i saw this missing Tongue

anyway changed the hack a bit more so that i get a background of the movies tab and moved it right behind the movies tab in the horizontal tab

so now for me i can push movies and have all 3000 + movies
and the kid he can go for movies thai (probably going to make 2 playlists from this)
and when the wife wants she can go for movies Th+eng

this was the only fall back i had about XBMC and thanks to you solved now

still a bit messing with the vertical menu to move it up a bit Tongue

anyway this is the Hack i used
Code:
<item id="17">
<label>Movies Dutch</label>
<onclick>ActivateWindow(10025,"special://profile/playlists/video/Movies.Dutch.xsp", return)</onclick>
                    <include condition="!Skin.HasSetting(Home_Movies_Fanart_Background)">home-movies-background</include>
                    <include condition="Skin.HasSetting(Home_Movies_Fanart_Background)">home-movies-background-fanart</include>
                    <visible>!Skin.HasSetting(Menu_Movies)</visible>
</item>
<item id="18">
<label>Movies English</label>
<onclick>ActivateWindow(10025,"special://profile/playlists/video/Movies.English.xsp", return)</onclick>
                    <include condition="!Skin.HasSetting(Home_Movies_Fanart_Background)">home-movies-background</include>
                    <include condition="Skin.HasSetting(Home_Movies_Fanart_Background)">home-movies-background-fanart</include>
                    <visible>!Skin.HasSetting(Menu_Movies)</visible>
</item>
<item id="19">
<label>Movies French</label>
<onclick>ActivateWindow(10025,"special://profile/playlists/video/Movies.French.xsp", return)</onclick>
                    <include condition="!Skin.HasSetting(Home_Movies_Fanart_Background)">home-movies-background</include>
                    <include condition="Skin.HasSetting(Home_Movies_Fanart_Background)">home-movies-background-fanart</include>
                    <visible>!Skin.HasSetting(Menu_Movies)</visible>
</item>
<item id="20">
<label>Movies Th + Eng</label>
<onclick>ActivateWindow(10025,"special://profile/playlists/video/Movies.TH.Eng.xsp", return)</onclick>
                    <include condition="!Skin.HasSetting(Home_Movies_Fanart_Background)">home-movies-background</include>
                    <include condition="Skin.HasSetting(Home_Movies_Fanart_Background)">home-movies-background-fanart</include>
                    <visible>!Skin.HasSetting(Menu_Movies)</visible>
</item>
<item id="21">
<label>Movies Thai</label>
<onclick>ActivateWindow(10025,"special://profile/playlists/video/Movies.Thai.xsp", return)</onclick>
                    <include condition="!Skin.HasSetting(Home_Movies_Fanart_Background)">home-movies-background</include>
                    <include condition="Skin.HasSetting(Home_Movies_Fanart_Background)">home-movies-background-fanart</include>
                    <visible>!Skin.HasSetting(Menu_Movies)</visible>
</item>
Reply
#10
I'm glad you got it working. And even more that you were able to tweak the way you wanted!
Reply
#11
Having recently learned how to "mask" my Rugby League games as TV Series using NFOs, I'm eager to try this out. Don't know whether I'll be able to apply it to my favourite skins—Aeon and Cirrus—but we'll see.
Reply
#12
I really wanna try this as i want to separate my documentaries from my movies just like you said, but it still seems pretty complicated, maybe I'll give a try, running Aeon65.
Reply
#13
How easy would it be to do this to one of the custom menus or
add submenu to one of the menu items showing all of the genres lined up.
In a world without walls and fences who needs windows and gates, open source, opens minds, so open yours today.

Image
Reply
#14
I like the sound of this a lot. And will look to give it a go once I have my installation updated with dharma.

Is there a way to add an item for a specific folder in the video menu? I have an "assorted" folder that I use for one off episodes, pilots, etc, that I dont want to bother with scanning in to XBMC. Currently I just browse to it through the Video menu. But would be nice to be able to jump down to it directly.
Reply
#15
shalarim Wrote:I like the sound of this a lot. And will look to give it a go once I have my installation updated with dharma.

Is there a way to add an item for a specific folder in the video menu? I have an "assorted" folder that I use for one off episodes, pilots, etc, that I dont want to bother with scanning in to XBMC. Currently I just browse to it through the Video menu. But would be nice to be able to jump down to it directly.

try

Code:
ActivateWindow(VideoFiles, "folder_here", return)

I'll give it a try this weekend to make sure.


wilson.joe Wrote:How easy would it be to do this to one of the custom menus or
add submenu to one of the menu items showing all of the genres lined up.

Adding sub menu's is easy. Don't know yet about how to link to the specific genres directly. Gonna have to look into it.
Reply
  • 1(current)
  • 2
  • 3
  • 4
  • 5
  • 9

Logout Mark Read Team Forum Stats Members Help
HOW-TO customize the home menu with custom categories5