Get an Epic Experience with Premium

X-Perl UnitFrames

Unit Frames Login to Add Favorites
  • World of Warcraft
  • 56,064 Monthly Downloads
  • Supports: 5.4.0
  • 22,938,355 Total Downloads
  • Updated 10/14/2013
  • Created 08/31/2008
  • 15,385 Favorites
  • Project Site
  • Comments
  • Release Type: Inactive
  • License: GNU General Public License version 3 (GPLv3)
  • Newest File: 3.7.5
Support development! **

About X-Perl UnitFrames

Patch 6.0.3 compatibility and future of X-Perl

Use latest alpha from WoWAce for using in Patch 6.0.3

May still has problems but for most cases it should be working(at least was tested on beta), if not, clearing old setting by killing(and backup) XPerlxxxxxxx.lua in the WTF directory of your WoW installlation and try again with fresh new default setting, thanks your patience.

If still someone want to help Zeksie for he earns his donates from X-Perl then that's fine for Zek and X-Perl, but seems like it's time to cut him out as no one want to help X-Perl anymore (as many of users already heard about the mess of this poor addon), I guess.

I don't know X-Perl will still be continue or not(it's highly possible it won't be, as the new maintainer Resike continued the developing and forked to Z-Perl, and he said he won't abandon his addons), I won't force everyone should must to use Resike's one at this point, as his Z-Perl isn't stable yet, and for some reasons, I don't think he want to port his fixes back to X-Perl as he knows about how Zek did about his addons and everyone who helped Zek to maintaining this poor addon...and, of course...X-Perl may broken again when next time Blizzard's patches released..... /sigh

(At this point, I won't force everyone who used X-Perl to go Z-Perl until it's more stable than now, feel free to use Z-Perl or other Unitframe addons if you want, and do NOT hold your breathe about X-Perl too much, too. I already lost my hope on X-Perl, at least I can trust Resike and Z-Perl now...)


PlayerLin - Maintainer of X-Perl but not a proper skilled coder, just a locale translator and do some shitty PRs. :(

Bug Reporting

Please use the Ticketing System on WoWAce Here and avoid posting bugs using comments on Curse because they're difficult to track and they will probably get lost.

Use a good error catcher (like BugSack from and provide the full error text, and give as much information as possible to recreate the problem. Don't assume We know what you're talking about with some three word report.


Perl, with Extra stuff. Much enchanced from Nymbia's Perl UnitFrames, and a complete replacement for Blizzard's default unit frames, including raid frames and raid tools, with little remaining of the original Nymbia code.

  • Range Finder (combined with optional health check and/or debuff check) for all frames based on spell or item range test.
  • HoT Monitor will highlight units clearly that have ''your own'' active Heal over Time spells. Regardless of how many other heal over time buffs are on the raid members, you can keep track of your own ones and when they expire.
  • Debuff Highlighting in standard debuff colours on all friendly frames. Priority given to show debuffs that ''you'' can cure first.
  • Raid Frames, buff icons, MT list units and some other portions or X-Perl are Created on demand. Saving a lot of time and memory at system startup. Defering the creation of many parts of X-Perl to when they are actually required. And of course, most often outside of raids they are never required and are never created.
  • Raid Target icon support for Target, Target's Target, MT Targets.
  • Raid Tooltip will show combat rezzers available (druids with Rebirth ready (or very soon available) and any normal rezzers out of combat) if you bring up tooltip of a dead person.
  • In-combat indicators for all units.
  • 3D Portraits for player, pet, target, focus, party. Optional. Of course this may degrade your framerate somewhat because you are displaying more 3D character models that without this option. But some like it pretty, and it does look cool.
  • Red and Green combat flashes for frames when player, pet, target, party, partypets, raid take damage/heals. Useful indication of things happening.
  • Added '''time left''' on party member/target buffs/debuffs when in a raid, these depend somewhat on CTRA sending appropriate information over the addon channel, although some of it can be determined at run time by X-Perl, when a player gets a buff for example, we know how long it should last, and therefor when it should expire.
  • Totally new options window including all X-Perl options and access via minimap icon and the /xperl splash command.
  • Configurable colours for borders and backgrounds. Including class coloured names, and configurable reaction colours.

Much care has been taken with code size, memory load, memory usage per cycle and so on. LuaProfiler/OnEvent mods used extensively and regularly to ensure that X-Perl does not do more work than is absolutely necessary.

Assists View

Will show anyone from raid assising you with your target, and can also show healers or all plus known enemies targetting you.

Tooltips for the same also available (on player and target frames) if you prefer to not use the main window.

MT Targets

Replaces CTRA MT Targets window, and doubles as a replacement for the Perl RaidFrames warrior targets.

Indicator shows which target you are on.

Frames will be coloured to show if tanks have duplicate targets.

Casting Monitor


Shows selected classes (defaults to healer classes) in a list (much like the MT List), but with some differences.

Shows mana bars and cast bars on left. Their targets on right. Health bar as normal, but a secondary small red bar on targets which shows the maximum single hit this unit has received since entering combat. The secondary bar will extend downwards from their current HP level down to as far as zero.

A green name on the targets indicates this is the same target that you have. You can click on casters or their targets as expected.

For druids, right clicking on a caster will cast Innervate on them.

For shamans, right clicking on a caster will cast Mana Tide Totem. Check the * indicator to see if they're in your group.

All bars can be re-sized in X-Perl main options (Monitor section).

Totals can be toggled (from the 'T' minibutton at top of frame) which gives overview of raid mana status.

Raid Admin


Save/Load raid roster setups Only does direct save and load for the moment, but more to come (templates and such).

Item Check

Replacement for /raitem /radur /raresist /rareg. Use the old commands before, or drop items in the left item list.

Query button will perform /raitem on all ticked items (query always includes dur and resists) and you can then view and review all the results whenever, without having to re-query each item.

Includes everyone in raid, so you don't have to work out who doesn't have items, it'll list them with 0 instead of no entry.

Active Scanner to check raid member's equipment for the item selected. So you can be sure that people actually have the item worn (Onyxia Cloak for example), without having to go round single target inspecting everyone who 'forgot' to install CTRA for the 50th raid in a row.

Grim Reaper

Removed from X-Perl, but continues as it's own standalone Ace mod.


More Buffing Features

Can be found in my new universal buffing mod, ZOMGBuffs


3.7.5 Release (r860/r859)
1.You can now disable pvp marks on the frames.
2.TTT Frame, FocusTarget and PetTarget Debuffs are now enabled and disabled correctly.
3.You can now enable Target's Target Debuffs independently from its Buffs.


First Previous Page 89 of 487 Next Last
  • #6717

    the extra unitframe is targetoftarget. That's you once the mob notices you.

  • #6715

    Have you focused yourself?

    Try typing /clearfocus

  • #6709

    I have my buffs in the upper right hand corner. On my buffs there is a clock countdown like fading effect that I belive is linked to Xperl, when I disable the addon it stops doing it. Is there a way to turn this clock like coundown off? I know it's a minor issue but it's driving me up the wall.. lol.

    Last edited by mallen78 on 5/11/2012 11:51:32 AM
  • #6710

    Did you try disabling buff cooldwon/countdown in the global tab ?

    Last edited by sontix on 5/13/2012 8:49:50 PM
  • #6712

    Nevermind. It's not doing it now. Not sure what I did to change it but I'm happeh!

  • #6711

    Yes I have the cooldown option on the global tab unchecked on one toon, but it shows the faded clock countdown. It seems to not be showing on my other character, even though the buff cooldown option is checked... weird...

  • #6707

    Is there a way to transfer settings or files to another computer?  I want to play WoW on my laptop, but I've been putting it off for weeks.  I rather shoot myself in the face than redo all my settings from scratch.  Thanks for the help if some one knows.

  • #6708

    Simply copy the addons and WTF folders over to the laptop.

    One "gotcha" to watch out for though is having different screen resolutions between the two machines.

  • #6705

    Anyone also having trouble with the runes with death nights not doing anything? They just stay full no rotation or cooldown, so I can not track the use of them.

  • #6704

    Was having trouble with deleting old uls till a read further in, love the options to edit, wtg man keep it up, its awesome ^.^

  • #6703

    This error when Prayer of Mending is set

    Message: Interface\AddOns\XPerl\XPerl_Highlight.lua:836: attempt to perform arithmetic on local 'x1' (a nil value)
    Time: 04/22/12 21:52:09
    Count: 1
    Stack: Interface\AddOns\XPerl\XPerl_Highlight.lua:836: in function `CreateMendingIcon'
    Interface\AddOns\XPerl\XPerl_Highlight.lua:734: in function `ShowMending'
    Interface\AddOns\XPerl\XPerl_Highlight.lua:382: in function `SetHighlight'
    Interface\AddOns\XPerl_Party\XPerl_Party.lua:71: in function `?'
    Interface\AddOns\XPerl\XPerl_Highlight.lua:1272: in function `Send'
    Interface\AddOns\XPerl\XPerl_Highlight.lua:183: in function `Add'
    Interface\AddOns\XPerl\XPerl_Highlight.lua:1316: in function `ev'
    Interface\AddOns\XPerl\XPerl_Highlight.lua:1293: in function `?'
    Interface\AddOns\XPerl\XPerl_Highlight.lua:1283: in function <Interface\AddOns\XPerl\XPerl_Highlight.lua:1282>

    Locals: self = XPerl_Highlight {
     0 = <userdata>
     HasEffect = <function> defined @Interface\AddOns\XPerl\XPerl_Highlight.lua:229
     ShowHotBar = <function> defined @Interface\AddOns\XPerl\XPerl_Highlight.lua:616
     RemoveHighlight = <function> defined @Interface\AddOns\XPerl\XPerl_Highlight.lua:1240
     PLAYER_ENTERING_WORLD = <function> defined @Interface\AddOns\XPerl\XPerl_Highlight.lua:1654
     TotalShield = <function> defined @Interface\AddOns\XPerl\XPerl_Highlight.lua:509
     SparkleAreaOnUpdate = <function> defined @Interface\AddOns\XPerl\XPerl_Highlight.lua:1200
     GetMyPomEndTime = <function> defined @Interface\AddOns\XPerl\XPerl_Highlight.lua:716
     TriggerMendingAnimation = <function> defined @Interface\AddOns\XPerl\XPerl_Highlight.lua:854
     list = <table> {
     RAID_ROSTER_UPDATE = <function> defined @Interface\AddOns\XPerl\XPerl_Highlight.lua:1638
     CreateHotBar = <function> defined @Interface\AddOns\XPerl\XPerl_Highlight.lua:561
     OnUpdate = <function> defined @Interface\AddOns\XPerl\XPerl_Highlight.lua:244
     Damage = <function> defined @Interface\AddOns\XPerl\XPerl_Highlight.lua:1474
     PLAYER_TARGET_CHANGED = <function> defined @Interface\AddOns\XPerl\XPerl_Highlight.lua:1646
     ShowHotCount = <function> defined @Interface\AddOns\XPerl\XPerl_Highlight.lua:689
     StartMendingAnimation = <function> defined @Interface\AddOns\XPerl\XPerl_Highlight.lua:882
     CreateShine = <function> defined @Interface\AddOns\XPerl\XPerl_Highlight.lua:551
     UNIT_AURA = <function> defined @Interface\AddOns\XPerl\XPerl_Highlight.lua:1573
     CreateHotCount = <function> defined @Interface\AddOns\XPerl\XPerl_Highlight.lua:649
     ShowShieldBar = <function> defined @Interface\AddOns\XPerl\XPerl_Highlight.lua:522
     lastExpireCheck = 0.017000000923872
     mendingIcons = <table> {
     RefreshAllAuras = <function> defined @Interface\AddOns\XPerl\XPerl_Highlight.lua:1661
     PARTY_MEMBERS_CHANGED = <function> defined @Interface\AddOns\XPerl\XPerl_Highlight.lua:1638
     Add = <function> defined @Interface\AddOns\XPerl\XPerl_Highlight.lua:141
     SparkleAreasOnUpdate = <function> defined @Interface\AddOns\XPerl\XPerl_Highlight.lua:1219
     OptionChange = <function> defined @Interface\AddOns\XPerl\XPerl_Highlight.lua:1669
     RemoveAllFromGUID = <function> defined @Interface\AddOns\XPerl\XPerl_Highlight.lua:1565
     UNIT_HEAL_PREDICTION = <function> defined @Interface\AddOns\XPerl\XPerl_Highlight.lua:1504
     ShowMending = <function> defined @Interface\AddOns\XPerl\XPerl_Highlight.lua:729
     FindMyPomPom = <function> defined @Interface\AddOns\XPerl\XPerl_Highlight.lua:1547
     Print = <function> defined @Interface\AddOns\XPerl\XPerl_Highlight.lua:136
     HasMyShield = <function> defined @Interface\AddOns\XPerl\XPerl_Highlight.lua:1534
     COMBAT_LOG_EVENT_UNFILTERED = <function> defined @Interface\AddOns\XPerl\XPerl_Highlight.lua:1290
     Remove = <function> defined @Interface\AddOns\XPerl\XPerl_Highlight.lua:213
     SparkleArea = <function> defined @Interface\AddOns\XPerl\XPerl_Highlight.lua:1017
     CreateMendingIcon = <function> defined @Interface\AddOns\XPerl\XPerl_Highlight.lua:787
     ShowHotSparks = <function> defined @Interface\AddOns\XPerl\XPerl_Highlight.lua:1226
     MendingAnimationOnUpdate = <function> defined

    Last edited by isage on 4/22/2012 7:27:20 AM
  • #6702

    how do i get the x-perl menu to come up so i can adjust it? Please help and thank you


  • #6698
    X-Perl + ClassPortraits

    If you're like me and you prefer the portrait to be the player's class icon instead, I combined the two addons into one. Change the XPerl_Unit_UpdatePortrait() function in /Interface/Addons/XPerl/XPerl.lua to what is below, and then in the XPerl options, set it to only display 2D portraits instead of the 3D character models.

    function XPerl_Unit_UpdatePortrait(self)
    if (self.conf and self.conf.portrait) then
    local pf = self.portraitFrame
    SetPortraitTexture(pf.portrait, self.partyid)
    if (self.conf.portrait3D and UnitIsVisible(self.partyid)) then
    XPerlSetPortrait3D(pf.portrait3D, self.partyid)
    local coords = CLASS_ICON_TCOORDS[select(2,UnitClass(self.partyid))]
    if coords then

  • #6697

    i want my buffs to looks like enemy buffs on bot of my health bar why they are on top right? 


  • #6696

    i have been using xperl since BC without any problems but now i have bugs all ove the place... such a shme i must replace it :(

  • To post a comment, please login or register a new account.
Login to Curse

Don't have an account? Create One.

Get an epic experience with Curse Premium
  • Faster addon downloads
  • Premium-Only Beta Giveaways
  • Ad-Free Curse experience
  • Premium Curse Client
  • and many More Features
  • Learn More »

Gamepedia Free-shirt Giveaway