Skip to main content

Overview

Groups are container displays that organize multiple WeakAuras displays into a single managed unit. They provide powerful positioning, layout, and management capabilities for complex display setups.
Groups do not show visual information themselves - they organize and position child displays.

Group Types

Static Groups

Static groups manually position child displays with fixed offsets:
-- Static group configuration
{
  regionType = "group",
  controlledChildren = {"Display1", "Display2", "Display3"},
  anchorPoint = "CENTER",
  xOffset = 0,
  yOffset = 0,
  scale = 1.0
}
Use Cases:
  • Fixed UI layouts
  • Custom HUD elements
  • Permanent display arrangements

Dynamic Groups

Dynamic groups automatically arrange child displays based on rules:
-- Dynamic group configuration
{
  regionType = "dynamicgroup",
  controlledChildren = {"Buff1", "Buff2", "Buff3"},
  grow = "RIGHT",
  align = "LEFT",
  space = 2,
  stagger = 0,
  sort = "ascending",
  limit = 10
}
Growth Directions:
  • RIGHT - Horizontal growth to the right
  • LEFT - Horizontal growth to the left
  • UP - Vertical growth upward
  • DOWN - Vertical growth downward
  • CIRCLE - Circular arrangement
  • GRID - Grid layout
{
  grow = "RIGHT",
  align = "CENTER",
  space = 5,
  rows = 1
}

Child Display Management

Adding Children

1

Select Group

Click the group display in the WeakAuras interface
2

Open Group Tab

Navigate to the “Group” tab in display settings
3

Add Displays

Click “Choose” and select displays to add as children
4

Arrange Order

Drag displays to reorder them within the group

Child Properties

Each child display inherits certain properties from the group:

Frame Level

Children share the group’s frame level for consistent layering

Position

Automatic positioning based on group layout settings

Scale

Group scale affects all children uniformly

Alpha

Group alpha can cascade to all children

Sorting and Ordering

Dynamic groups support multiple sorting methods:
{
  sort = "hybrid",           -- Sorting method
  hybridPosition = "hybrid", -- Position within hybrid sort
  sortHybridTable = {
    -- Custom hybrid sorting rules
  }
}

Sort Methods

MethodDescription
noneMaintain manual order
ascendingSort by name A-Z
descendingSort by name Z-A
hybridCustom multi-criteria sorting
Use hybrid sorting to combine multiple sort criteria, like sorting buffs by duration then by name.

Group Positioning

Anchor Points

Groups support all standard anchor points:
{
  selfPoint = "CENTER",      -- Where children anchor to
  anchorPoint = "CENTER",    -- Where group anchors
  anchorFrameType = "SCREEN",
  xOffset = 0,
  yOffset = 0
}

Stagger and Spacing

Distance between child displays in pixels:
{ space = 5 }  -- 5 pixels between children
Perpendicular offset for alternating children:
{ 
  grow = "RIGHT",
  stagger = 10  -- Every other child offset by 10 pixels
}
Separate row and column spacing:
{
  grow = "GRID",
  rowSpace = 5,
  columnSpace = 3
}

Border and Background

Groups can display borders around all visible children:
{
  border = true,
  borderEdge = "Square Full White",
  borderSize = 2,
  borderOffset = 4,
  borderInset = 1,
  borderColor = {0, 0, 0, 1},
  borderBackdrop = "Blizzard Tooltip",
  backdropColor = {1, 1, 1, 0.5}
}
Borders automatically adjust to encompass all visible children, which may cause size changes during animations.

Advanced Features

Limit Display Count

Control how many children are shown:
{
  limit = 5,  -- Show only 5 displays
  sort = "ascending"  -- Show first 5 alphabetically
}

Animation Coordination

Groups can coordinate animations across all children:
{
  groupIcon = true,          -- Use group-level icon
  useAnchorPerUnit = false,  -- Shared anchor for all
  stepAngle = 15            -- For circular layouts
}

Frame Level Management

{
  sharedFrameLevel = true,  -- All children same level
  frameStrata = 2          -- Medium strata
}

Frame Level Inheritance

When sharedFrameLevel is enabled, all children are automatically set to the same frame level, ensuring consistent z-ordering.

Common Patterns

Buff Bar

-- Horizontal buff display
{
  regionType = "dynamicgroup",
  grow = "RIGHT",
  align = "LEFT",
  space = 2,
  sort = "ascending",
  limit = 20,
  border = true,
  borderOffset = 5
}

Raid Cooldown Grid

-- Grid of raid cooldowns
{
  regionType = "dynamicgroup",
  grow = "GRID",
  gridType = "RD",
  gridWidth = 5,
  rowSpace = 3,
  columnSpace = 3,
  sort = "hybrid"
}

Circular Indicator

-- Circular resource display
{
  regionType = "dynamicgroup",
  grow = "CIRCLE",
  radius = 80,
  rotation = 90,
  arcLength = 360,
  constantFactor = "RADIUS"
}

Best Practices

Troubleshooting

Ensure the group display is loaded and children are properly added to controlledChildren.
Border size recalculates when children show/hide. Consider disabling border or using fixed positioning.
Enable sharedFrameLevel or manually adjust frame levels of individual children.

Display Types

Learn about child display types

Animations

Coordinate animations in groups

Conditions

Apply group-level conditions

Build docs developers (and LLMs) love