Regarding making a plugin that loads and displays Winamp Modern skins:
This requires the use of the Wasabi framework which Nullsoft developed for their to-be portable Winamp3 (it remained Win32 only though). Winamp 5 took the parts from Wasabi required to display Winamp3 skins (redubbed Modern skins) and incorporated it into it's gen_ff.dll plugin.
The modern skin code was never made open, and the available Wasabi framework lacks that functionality.
If you can get hold of the Wasabi framwork you could possibly use parts of it to make a wrapper for the gen_ff.dll plugin bundled with Winamp 5. Would need som reverse engineering of the Winamp core.
Moderns skins use the MAKI script language which is compiled into bytecode (just like Java) in order to execute faster together with lots of XML which defines the user interface and event handlers.
Wasabi was a nice idea that was cannabalized by Nullsoft.
So in a way your plugin is a lot like it. Except uses LUA as scripting language (which is better IMHO).
Actually FooBar2000 is much better because it allows one to code his own UI for it. That beats any skinning engine hands down. But I wish FooBar2000 was Client/Server based (like XMMS and DeliPlayer). That would allow the UI to crash without bringing down the rest of the player. I am thinking of making a foo_ui_null plugin soon which really is no UI at all. Then you can just use the foo_controlserver plugin to control FooBar2000 via Telnet for the ultimate hackers UI.
A quick suggestion for the default skin.
.
.
.
function option(key, defvalue, show, list)
local value = config.load(defvalue, key);
config.save(value, key, show, list);
return value;
end
--This is the new stuff
skinfolder = option("skinfolder", "myXMMS", true);
Then you will have to do some search and replace.
Replace all occurences of
"\\waskin
with
skinfolder .. "\\
That will add a new option on the preferences page so one can choose his/her own skin folder.