Developers

Build on SuuUI

Every built-in module is written against the same public API a plugin uses, so a plugin can do anything SuuUI's own modules do.

Plugins

A module in a few lines

A plugin is an addon with ## Dependencies: SuuUI that calls SuuUI.RegisterModule.

  • Settings with defaults, saved per profile, with migrations
  • Chat commands, game events and SuuUI's own messages
  • A section in the settings window, under Plugins
  • Frames built from SuuUI's components, movable in edit mode
  • Switched off like any other module; an error stays inside it
SuuUI.RegisterModule({
    id = "hello",
    name = "Hello",
    description = "An example plugin that says hello.",
    api = "0.4",
    defaults = {
        greeting = "Hello from a SuuUI plugin",
    },

    OnEnable = function(self)
        -- /suu hello says the greeting
        self:RegisterCommand("hello", "Say the Hello plugin's greeting.", function()
            self:Print(self:Get("greeting"))
        end)
    end,
})
Trimmed from Examples/SuuUI_HelloPlugin, which adds a setting, a movable frame and a settings section.
Resources

Everything you need to start

Plugin API

Modules, settings and migrations, the settings window, edit mode, events, components such as unit frames, cast bars, aura containers, windows and map pins, and the design tokens. Versioned, now 0.16, so a plugin says which API it needs.

Read Docs/API.md

Example plugin

A minimal module with a setting, a chat command, a movable frame and its own settings section. Copy the folder into AddOns to try it.

Open the example

ForeverLFG

SuuUI.LFG: the game's group finder and public chat as one list, with events. SuuUI's Group Finder is built on it the way a plugin would be.

Read the design

Diagnostics

/suu probe checks which client APIs SuuUI relies on. /suu probe <topic> records what the live client allows, from spells and talents to the group finder and the guild.

See the probes
From source

Build it yourself

The repository is the source, not the addon itself. It builds with wowlua 0.9 or later.

git clone git@github.com:DomenikIrrgang/suuui.git
cd suuui
# check the sources without building
wowlua check
# build and install into your game's AddOns folder
wowlua install --release
# rebuild on every change, then /reload in game
wowlua dev

Project layout

src/Core
Tokens, fonts, events, settings and profiles, modules, roles, the public API
src/UI
Components: unit frame, cast bar, action button, windows, roster, group finder
src/SettingsUI
The settings window and its sections
src/EditMode
Moving frames on a snap grid
src/Units
The built-in modules: frames, bars, chat, bags, windows, guild, group finder
src/Libs
ForeverLFG, the group finder library
src/Data
Generated data: Cooldown Manager presets, talents, the aura catalog, recipe sources
src/Diagnostics
Probes that read the live client
tools
Generators for the presets and data, and the chat parser replay (run with Lua)
wowlua.json
The build: TOC fields, assets, release profiles and publish targets

Questions about the API?

Ask on Discord, or open an issue on GitHub for a bug or something the API is missing. SuuUI is MIT licensed.