Minimal set of files required?
#1
Hello,

What is the minimal set of files required for a skin? Any specific elements they have to implement?

I mean, I created a "skin" consisting of only Home.xml file (+addon.xml). I expected to get GUI consisting of just my home screen (or empty/garbled one, as probably there are errors in my Home.xml), but it looked like Kodi was confused and after loading the skin it just blanked the settings screen.
Reply
#2
I would expect you need most of the xmls.

These are absolutely essential:
DialogConfirm.xml - so you can choose to keep the skin once you select it
Settings.xml and SettingsCategory.xml - so you have somewhere to land after you select the skin
Includes.xml - if you want to use any includes or variable or defaults at all.
Font.xml - define your fonts

Startup.xml and LoginScreen.xml - I'm not sure if these are essential, but they are used on startup.

You would need most dialogs, but these are particularly important
DialogKeyboard
DialogNumeric
DialogSelect
DialogSettings
DialogContextMenu
FileBrowser

I would also expect you would want these
DialogNotification
DialogBusy
DialogVolumeBar
DialogExtendedProgressBar

You would also need all the stuff for playing media:
VideoFullScreen
MusicVisualisation
MusicOSD
VideoOSD
DialogSeekbar

You also need the colors defaults to define your colors.
colors/defaults.xml

You might be able to get away without the others, though really you need everything except for the PVR specific stuff.

Rather than starting from scratch, I would suggest cloning Estuary and keeping all the files intact and just modifying the home screen - this way if any dialog is needed its there.
Arctic Fuse - Alpha now available. Support me on Ko-fi.
Reply
#3
Thanks.

I think the skin-development section in wiki could have a bit of description about how Kodi interacts with a skin. It's not like that it reads Home.xml (or Startup.xml) and then everything goes as defined there.

Fe. in Home.xml of Estuary there is no 'id' attribute for 'window' element - why? It seems to me, that database contents is feed to windows in some magical way as well - fe. in MyPics.xml there are references to List.Item, but I cannot find out how the contents of List is determined - is it set out of skin based on file name? Lack of comments does not help as well.

For me laying out the rules, even complex, and going on from here would be more effective than trying things here or there, if fact reverse-engineering many of concepts and patterns deployed in skins.
Reply
#4
You probably need to read the Skinning Manual. The skinning engine is quite complex and powerful
http://kodi.wiki/view/Skinning_Manual

The window ids are hard coded for built in windows - its only for custom windows that you can define a window id (between 1100 and 1199).

Database is supplied to the view ids defined by the <view> tags in the various MyXXXXX.xml windows depending on what part of the library you are in. ListItem refers to that particular item in the list.

For instance:
Code:
ActivateWindow(videos,videodb://movies/titles/,return)
Will open MyVideoNav.xml at the videodb://movies/titles node of the video library (i.e. all your movies). This will be the content of the list.
There are controls in MyVideoNav.xml that can be used to change how the list is sorted and to cycle through the views you have defined.

The thing you have to remember is that the skinning engine has evolved dramatically over the course of development from xbmp to xbmc to kodi. This started as a homebrew app for a soft or hard modded original xbox (I still have one lying around in a cupboard somewhere that runs Atlantis iirc -- long time since I used it). There has been a lot of effort to consolidate how the skinning engine works but there is still a lot of legacy stuff in there so things can seem a little mismatched or "magic" at times.

I really do recommend starting out by making some modifications on an existing skin, because once you get your head around it, the skinning engine is pretty straightforward for the most part. But if you start with a blank slate you are going to be working very hard just to get things to work as there are many aspects of the skinning engine that can be finicky and if you don't make the right ritual sacrifice the skinning gods will curse you with a blank screen and no explanation why... But seriously, if it were a proper programming language I would suggest going from scratch, but really it is much simpler than even html; but if you don't have the right controls in the right window things will just refuse to work - its a case of everything has to be there or else nothing works.
Arctic Fuse - Alpha now available. Support me on Ko-fi.
Reply
#5
Some very useful points. I will switch to cloned Estuary and will go on from there.

If I were to name single simple thing that would make skinner's life easier, it is the DTD for skin XML.
Reply

Logout Mark Read Team Forum Stats Members Help
Minimal set of files required?0