How to skin an Addon with Skinner

For the purposes of this document the addon is called MySkinnedAddon and it has one frame called MainFrame

I recommend that you run WoW in windowed mode to make it easier to change the skin code and test it in WoW.


Optional, but helpful

  • Baddiel - used to find out Object names
  • Omnibus - used to test some commands
  • Blizzard's Editing UI - used to adjust object placement etc. An updated version for WotLK can be found here


  • Skinner
  • The Addon you want to skin
  • A Text Editor, preferably one that has Lua syntax highlighting


  1. Load WoW and make sure both Skinner and MySkinnedAddon are working properly. This can save a lot of time debugging the skin code.
  2. If you want to use Baddiel to generate some of the code for you then refer to the section [[#How to use Baddiel to help skin an Addon]] .
  3. Enter the following slash commands to turn on Warnings and Errors for Skinner
    /Skinner errors
    /Skinner warnings
  4. Close WoW
  5. Open the Skinner directory in the Editor and do the following:
    1. Edit the skins.xml file and add a line in the alphabetical sequence of skins for the Addon you are skinning. e.g.
    2. Edit the AddonFrames.lua file and add a entry to the addonFrames table in the alphabetical sequence for the Addon you are skinning.
      If it's a LoadOnDemand Addon then add the entry to the lodFrames table
  6. Create a new file in the SkinMe sub-directory of Skinner called MySkinnedAddon.lua.
    In this file add the following lines
    function Skinner:MySkinnedAddon.lua()
  7. Load WoW again and check that no warnings or errors were reported by Skinner
Then use the following function definitions to add the required lines to the MySkinnedAddon.lua file testing them in WoW by issuing a
after each change to see its effect.

An easier way is to use Omnibus to test the lines, building up the skin as you go and when you are happy with it, copy the code into the MySkinnedAddon.lua file.


  • Required parameters are underlined.
  • Optional parameters can be nil.
  • Parameter types/values are shown in []

N.B. All parameters using the term object refer to the lua object NOT its name. i.e. MainFrame not "MainFrame".
To convert from one to the other use either MainFrame:GetName() to get the Text version or _G["MainFrame"] to get the object

The following functions, amongst others, can be used in the MySkinnedAddon.lua file to skin the Addon

  • applySkin(frame, header, bba, ba, fh, bd) - applies the Backdrop and the Gradient
    • frame - the Frame object
    • header [True/False] - used if the frame has a Heading Box named either MainFrameHeader or MainFrame_Header that should be removed, the enclosed Text is moved
    • bba [0.0 - 1.0] - set the BackdropBorderAlpha value
    • ba [0.0 - 1.0] - set the BackdropAlpha value
    • fh [0 - 999] - set the Fadeheight value
    • bd [Backdrop Table]- set the Backdrop to use
  • keepFontStrings(frame) - removes all Textures from the frame but leaves the FontStrings (i.e. Text)
    • frame - the Frame object
  • moveObject(objName, xAdj, xDiff, yAdj, yDiff, relTo) - move the object
    • objName the object to be moved
    • xAdj [+/-] - move object right or left
    • xDiff [0 - 999] - set the left to right value
    • yAdj [+/-] - move object up or down
    • yDiff [0 - 999] - set the top to bottom value
    • relTo [object] - set the object to move relative to
  • skinScrollBar(scrollFrame, sbPrefix, sbObj) - skin a Scroll Bar using the Scroll Bar backdrop
    • scrollFrame - the ScrollFrame object
    • sbPrefix [string] - set the prefix to use. Used when the Scroll Bar is called ScrollFramexxxScrollBar
    • sbObj [object] - set the object to skin if it has a non standard name
  • skinEditBox(editBox, regions, noSkin, noHeight)
    • editBox - the EditBox object
    • regions [table] - set the EditBox regions (textures/fontstrings etc) to keep, usually {9}
  • glazeStatusBar(statusBar, fi)
    • statusBar - the StatusBar object
    • fi [number] - set background offset
  • For a very simple example look at SkinMe/EasyTrack.lua or SkinMe/DoubleWide.lua
  • For a simple example look at SkinMe/BugSack.lua
  • For a more difficult example look at SkinMe/Clique.lua
  • For a complicated example look at SkinMe/Dewdrop.lua or SkinMe/Recount.lua

Also checkout some of the code in the Skinner directory

How to use Baddiel to help skin an Addon

If you have loaded Baddiel then you can get a lot of the Skinner commands generated for you.

  • To find out what different object names are, hover the mouse over them when entering the slash command
    /baddiel ft
  • Enter the following as a slash command while the mouse is over the Addon frame you want to skin
    /baddiel sf
  • The generated code is written to Baddiel's SV file, so to get it you'll need to logout to force the SV data to be written.
  • Then you can open the SV file and copy the contents into a new editor document.


Date created
Oct 08, 2008
Last updated
Oct 15, 2008