Shadowed Unit Frames

Another example

SUF focuses on a simple configuration while maintaining the flexibility that most users will care about, preventing unnecessary bloating of the addon that sacrifices performance. While you aren't going to be able to set the health bar to be exactly 3.14 pixels outside of the unit frames, you can change options you actually care about such as bar height, ordering, frame height and so on. To speed up configuration, you can configure multiple units at the same time through the global configuration. For example, if you want to set the height of the Player, Target, Focus and Party frames to 50 then the height of Target's Target, Target's Target of Target, Focus Target to 30 you can easily do this by changing two options instead of having to do it seven times.

However, should you need a little bit of extra configuration do not despair! An advanced option is included that will unlock additional configuration giving finer control over the configuration.

Slash commands: /shadoweduf (/suf)

Donations are not required, but are appreciated!

Are you driven crazy by your party frames not aligning up exactly with your player frames, even if it's only half a pixel off? The anchoring system will let you solve all alignment issues, by allowing you to anchor a frame to another and set a simple offset from the frame it is anchored to, or by manually setting the X/Y position of the frame.

Using the screen shot as an example, if you drag the player frame the other frames will move with the player frame preserving the alignment and spacing. Each frame can still be manually positioned wherever you want, but this gives you a way of easily anchoring and moving frames around without having to use a ruler.

Zone configuration (Disabling options/units by zone type)
Units and modules can be enabled or disabled based on the type of zone you are in. For example, if you want to see party targets and party pets while you are in an arena but nowhere else then you can use the visibility options to enable it only while inside an arena. Modules can also be disabled by zone type, if you want to see party auras while in a raid instance but nowhere else you can disable the module in raid instances only.

Profiles do not have to be swapped and it is all automatic.

Supports unit frames are as follows:

Player: Player, Pet, Pet Target
General: Target, Target of Target, Target of Target of Target, Focus, Focus Target
Party: Party, Party Pets, Party Targets, Party ToT
Raid: Raid, Raid Pet, Main Tank, Main Tank Target, Main Assist, Main Assist Target, Boss, Boss Target, Boss ToT, Main Assist ToT, Main Tank ToT
Arena: Arena, Arena Target, Arena Pets, Arena ToT
Battleground: Battleground, Battleground Target, Battleground Target


  • Tags: Includes a simple tagging system that can be customized in virtually any way using Lua, even if something isn't included by default odds are you can make the tags
  • Incoming Heals: Supports the Blizzard Events for incoming heal data, no external libraries needed
  • Auras: Can be set to only show auras you casted, or can cast on others. Can enlarge auras that you casted, and hide the cooldown ring on the timers of auras you didn't cast as well to make it more obvious which ones you casted and which ones you didn't
  • Aura Timers: You will need a mod such as OmniCC to show timers on buffs and debuffs
  • Aura Indicators: Display colored squares or icons for certain auras on any unit
  • Fader: Fades frames when out of combat and inactive (100% mana/no target)
  • Class Power (Eclipse, Holy Power, etc): Supports all of the class power features from Eclipse to Burning Embers.
  • Highlighting: Border highlighting of frames based on mousing over them, curable debuffs, aggro or you are targeting/focusing them
  • Range Checking: Fades frames out that are out of range of you
  • Exportable Layouts: If you have a layout, or your friend has a layout you want to try out you can export/import SUF layouts by going to /suf -> Layout Manager
  • Profiles: You can change from any profile to another one without reloading your UI, should you want to use a completely different layout based on zone you can easily switch profiles without hassle

Pretty much all the general unit frame settings are in, health bars, cast bars, power bars, portraits, indicators and so on.

Basic module support is included, should you be interested in building a module see the documentation on github for more information.

Currently released:


Please focus all discussions, questions or general feedback to the forum thread:

For feature requests and bug reports, please continue to use the Ticket tracker. Feel free to ask on the thread first, if you're unsure what to do!

You must login to post a comment. Don't have an account? Register to get one!

  • Avatar of Shadowed Shadowed Oct 02, 2012 at 06:03 UTC - 0 likes

    Did you add custom text tags?

  • Avatar of ashemedai ashemedai Oct 02, 2012 at 05:39 UTC - 0 likes

    Current alpha errors out with:

    1x ShadowedUnitFrames-v3.6.1-19-g97ea4a8\modules\layout.lua:414: bad argument #1 to "sub" (string expected, got nil)
    <in C code>
    ShadowedUnitFrames-v3.6.1-19-g97ea4a8\modules\layout.lua:414: in function "SetupText"
    ShadowedUnitFrames-v3.6.1-19-g97ea4a8\modules\layout.lua:132: in function "Load"
    ShadowedUnitFrames-v3.6.1-19-g97ea4a8\modules\units.lua:306: in function "SetVisibility"
    ShadowedUnitFrames-v3.6.1-19-g97ea4a8\modules\units.lua:613: in function <ShadowedUnitFrames\modules\units.lua:460>
    <in C code>
    ShadowedUnitFrames-v3.6.1-19-g97ea4a8\modules\units.lua:943: in function "LoadUnit"
    ShadowedUnitFrames-v3.6.1-19-g97ea4a8\modules\units.lua:1231: in function "InitializeFrame"
    ShadowedUnitFrames\ShadowedUnitFrames-v3.6.1-19-g97ea4a8.lua:250: in function "LoadUnits"
    ShadowedUnitFrames\ShadowedUnitFrames-v3.6.1-19-g97ea4a8.lua:82: in function "OnInitialize"
    ShadowedUnitFrames\ShadowedUnitFrames-v3.6.1-19-g97ea4a8.lua:751: in function <ShadowedUnitFrames\ShadowedUnitFrames.lua:749>
    self = <table> {
     SetupBars = <func> @ShadowedUnitFrames\modules\layout.lua:347
     CheckMedia = <func> @ShadowedUnitFrames\modules\layout.lua:48
     SetupFrame = <func> @ShadowedUnitFrames\modules\layout.lua:303
     LoadSML = <func> @ShadowedUnitFrames\modules\layout.lua:154
     ReverseDirection = <func> @ShadowedUnitFrames\modules\layout.lua:210
     ToggleVisibility = <func> @ShadowedUnitFrames\modules\layout.lua:68
     GetRelative = <func> @ShadowedUnitFrames\modules\layout.lua:198
     mediaPath = <table> {}
     PositionWidgets = <func> @ShadowedUnitFrames\modules\layout.lua:460
     SetupText = <func> @ShadowedUnitFrames\modules\layout.lua:402
     MediaRegistered = <func> @ShadowedUnitFrames\modules\layout.lua:58
     GetRelativeAnchor = <func> @ShadowedUnitFrames\modules\layout.lua:215
     SetupFontString = <func> @ShadowedUnitFrames\modules\layout.lua:386
     GetAuraGrowth = <func> @ShadowedUnitFrames\modules\layout.lua:206
     Reload = <func> @ShadowedUnitFrames\modules\layout.lua:97
     SetBarVisibility = <func> @ShadowedUnitFrames\modules\layout.lua:76
     GetJustify = <func> @ShadowedUnitFrames\modules\layout.lua:181
     GetPoint = <func> @ShadowedUnitFrames\modules\layout.lua:194
     MediaForced = <func> @ShadowedUnitFrames\modules\layout.lua:10
     GetColumnGrowth = <func> @ShadowedUnitFrames\modules\layout.lua:202
     GetSplitRelativeAnchor = <func> @ShadowedUnitFrames\modules\layout.lua:237
     Load = <func> @ShadowedUnitFrames\modules\layout.lua:122
     AnchorFrame = <func> @ShadowedUnitFrames\modules\layout.lua:253
    frame = SUFUnitplayer {
     vehicleUnit = "vehicle"
     OnEnter = <func> @ShadowedUnitFrames\modules\units.lua:669
     portrait = <unnamed> {}
     UnregisterAll = <func> @ShadowedUnitFrames\modules\units.lua:134
     registeredEvents = <table> {}
     powerBar = <unnamed> {}
     RegisterNormalEvent = <func> @ShadowedUnitFrames\modules\units.lua:60
     SetVisibility = <func> @ShadowedUnitFrames\modules\units.lua:245
     topFrameLevel = 5
     druidBar = <unnamed> {}
     RegisterUpdateFunc = <func> @ShadowedUnitFrames\modules\units.lua:107
     SetBlockColor = <func> @ShadowedUnitFrames\modules\units.lua:182
     unitType = "player"
     SetRangeAlpha = <func> @ShadowedUnitFrames\modules\units.lua:170
     visibility = <table> {}
     xpBar = <unnamed> {}
     indicators = <unnamed> {}
     unitInitialized = true
     unitRealType = "player"
     unit = "player"
     ReregisterUnitEvents = <func> @ShadowedUnitFrames\modules\units.lua:39
     RegisterUnitEvent = <func> @ShadowedUnitFrames\modules\units.lua:101
     fontStrings = <table> {}
     SetBarColor = <func> @ShadowedUnitFrames\modules\units.lua:178
     altPowerBar = <unnamed> {}
     healthBar = <unnamed> {}
     combatText = <unnamed> {}
     highFrame = <unnamed> {}
     OnLeave = <func> @FrameXML\UnitFrame.lua:214
     UnregisterSingleEvent = <func> @ShadowedUnitFrames\modules\units.lua:84
     DisableRangeAlpha = <func> @ShadowedUnitFrames\modules\units.lua:162
     0 = <userdata>
     fullUpdates = <table> {}
     UnregisterUpdateFunc = <func> @ShadowedUnitFrames\modules\units.lua:124
     menu = <func> @ShadowedUnitFrames\modules\units.lua:403
  • Avatar of serruf serruf Oct 02, 2012 at 05:29 UTC - 0 likes

    v3.6.1-19-g97ea4a8 = lost castes bar!

  • Avatar of Austra Austra Oct 01, 2012 at 07:55 UTC - 0 likes

    i found it yeah under player general and yeah i was just being blind lol

  • Avatar of Shadowed Shadowed Oct 01, 2012 at 02:21 UTC - 0 likes

    No problem. Blizzard built in all of the extra work so I was able to roll it into SUF with minimal additional code.

    Oh it might be under "General", one of those tabs.

  • Avatar of Austra Austra Oct 01, 2012 at 01:57 UTC - 0 likes

    btw thou thanks for putting the change of bar growth into the addon itself made my day ready that earlier

  • Avatar of Austra Austra Oct 01, 2012 at 01:54 UTC - 0 likes

    yeah i can remove the poer bar so it doesnt show as blocks but then when i turn that off dots apear next to the unit frame instead and i cant see anywhere to not show the dots unles i use the bar

  • Avatar of Shadowed Shadowed Oct 01, 2012 at 00:25 UTC - 0 likes

    It's just under "Bars"

  • Avatar of Austra Austra Sep 30, 2012 at 23:49 UTC - 0 likes

    i am just being really stupid or am i just blind but is there any way of totally removing holy power from the units as im using something else to track them.. i have turned off the bar but now have dots.. or am i just going to have to live with the dots?

  • Avatar of eternalwhitemoon eternalwhitemoon Sep 29, 2012 at 18:09 UTC - 0 likes

    @Thred: Go

    I had this same problem. Clicking "ResetHB" doesn't seem to perform any valuable type of reset for me, so I had to dig into the settings a little more. I did eventually figure it out, and I wanted to let anyone else know that's having the problem precisely how to fix it:

    In HealBot, go to Skins>General and about 2/3 of the way down the page, there's an option that says "Hide party frames", which for me was checked. Next to it is a radio button that says "Include player and target", which was NOT selected for me. (I think this was selected in the past, and somehow got unselected.)

    So I simply selected this radio button, closed Healbot, and reloaded the UI. Voila, no stupid Blizzard frames under my beautiful SUF frames. :D


Date created
May 17, 2009
Last update
Aug 04, 2014
Development stage
  • enUS
  • koKR
  • ruRU
  • zhCN
  • zhTW
All Rights Reserved
Curse link
Shadowed Unit Frames
Reverse relationships
Recent files