Skip to main content

What are Displays?

Displays are the visual elements that WeakAuras shows on your screen. Each display has a type that determines how it appears and what kind of information it can show.

Display Types

WeakAuras supports multiple display types, each optimized for different use cases:

Icon

Circular or square texture with optional cooldown overlay

Progress Bar

Horizontal or vertical bar showing progress with text labels

Text

Dynamic text that can display any game information

Texture

Custom textures with progress fill options

Model

3D models from the game’s model files

Group

Container for organizing multiple displays

Display Properties

All displays share common properties:

Position and Size

-- From Types.lua
region:SetWidth(width)
region:SetHeight(height)
region:ClearAllPoints()
region:SetPoint("CENTER", UIParent, "CENTER", xOffset, yOffset)
Displays can be anchored to:
  • Screen positions (CENTER, TOP, BOTTOM, etc.)
  • Other displays or frames
  • Screen coordinates (x, y)
Anchor to other WeakAuras to create complex multi-element displays.

Display State

Displays can be in several states:
  • Hidden - Not shown on screen
  • Showing - Visible with full opacity
  • Loading - Being initialized
  • Error - Configuration error

Display Configuration

Each display has extensive configuration options:
  • Color and transparency
  • Border and background
  • Glow effects
  • Textures and icons
  • Font and text formatting
  • Show/hide triggers
  • Update frequency
  • Stacking behavior
  • Tooltip configuration
  • Start animation
  • Main animation (while active)
  • Finish animation
  • Animation type and duration

Creating a Display

Displays are created through the WeakAuras interface:
1

Open WeakAuras

Type /wa in chat to open the configuration interface.
2

Click New

Click the “New” button to start creating a display.
3

Select Display Type

Choose the display type that best fits your needs:
  • Icon for buff/debuff tracking
  • Progress Bar for resource monitoring
  • Text for numeric information
  • Texture for custom graphics
4

Configure Properties

Set up the display’s appearance, position, and size.
5

Add Triggers

Configure when the display should show and what data it displays.

Display Data

Displays receive data from their triggers:
-- Example display data structure
local displayData = {
  show = true,
  changed = true,
  icon = "Interface\\Icons\\Spell_Nature_Bloodlust",
  duration = 40,
  expirationTime = GetTime() + 40,
  value = 100,
  total = 100,
  stacks = 1,
  name = "Bloodlust"
}

Sub-Regions

Displays can have sub-regions that add additional elements:

Sub Text

Additional text overlays with custom positioning

Border

Custom borders around the display

Glow

Glow effects (pixel, autocast, proc, etc.)

Background

Background texture behind the display

Tick

Progress markers on bars

Sub-Texture

Additional textures overlaid

Display Updates

Displays update when:
  1. Trigger state changes - Show/hide
  2. Data values change - Progress, text, icon
  3. Manual updates - Via custom code
  4. Frame updates - Animation frames
-- From RegionTypes/RegionPrototype.lua
function region:UpdateDisplayState()
  if self.state.show then
    self:Show()
  else
    self:Hide()
  end
end

Performance Considerations

Too many complex displays can impact game performance!

Best Practices

  1. Use load conditions to limit when displays are active
  2. Avoid frequent updates - Use appropriate trigger types
  3. Minimize custom code - Use built-in options when possible
  4. Group related displays - Improves organization and performance
  5. Disable unused displays - Don’t just hide them

Performance Metrics

-- WeakAuras tracks performance internally
Private.profiling = {
  startTime = 0,
  endTime = 0,
  cpuTime = 0
}
Use /wa profile to see which auras use the most CPU time.

Common Display Patterns

Resource Tracker

-- Icon display for class resource
{
  regionType = "icon",
  triggers = {
    { trigger = { type = "status", event = "Power" } }
  },
  icon = "Interface\\PlayerFrame\\UI-PlayerFrame-Deathknight-Blood"
}

Cooldown Monitor

-- Progress bar for ability cooldown
{
  regionType = "aurabar",
  triggers = {
    { trigger = { type = "spell", event = "Cooldown Progress (Spell)" } }
  },
  bar = {
    foregroundColor = {1, 0.5, 0, 1}
  }
}

Buff Reminder

-- Icon that shows when buff is missing
{
  regionType = "icon",
  triggers = {
    {
      trigger = {
        type = "aura2",
        auranames = "Battle Shout",
        useName = true,
        matchesShowOn = "showOnMissing"
      }
    }
  }
}

Next Steps

Icon Displays

Learn about icon display configuration and cooldown overlays

Progress Bars

Create dynamic progress bars for resources and timers

Text Displays

Display dynamic text with custom formatting

Groups

Organize multiple displays with groups

Build docs developers (and LLMs) love