2,356 Downloads Last Updated: Sep 13, 2019 Game Version: 1.13.2  

Burning Crusade Classic

noUI has not yet been updated for Burning Crusade Classic.
Supporting me on Patreon is the quickest way to make it possible for me to continue working on noUI.
I only accept unsolicited donations and my addons and updates will always be free to download and free to use.

Regards and happy gaming!

World of Warcraft Classic

TL;DR; Hides interface elements when they are not needed.


No interface is best interface

The standard World of Warcraft user interface is by no means bad, but some players think it could be a bit more understated, a little less in-your-face. And whereas nothing is as minimal, as clean & as out-of-your-face as no UI at all, having no UI is clearly not very usable. And so players install addons that thoughtfully & carefully minimalize their UI, replacing standard UI elements with custom ones that have less visual impact.

This addon takes a different approach to achieve interface Nirvana: Instead of changing how your UI looks, it changes when your UI is visible. The general idea goes like this: Interface elements that are hidden don't need a minimal look, and if those interface elements are visible seldom enough, then the standard user interface is Good Enough™.

If you end up liking noUI, you can support me and noUI's development on Patreon.


1) This addon hides your character portrait unless:

- You have a target
- You are in combat
- Your health or mana/energy is not full
- You have a UI panel open (like the character panel, or your bags, etc.)
- You mouse over your character portrait

2) This addon hides your action bar unless:

- You have a target (except friendly, trivial NPCs)
- You are in combat
- Your health or mana/energy is not full
- You have a UI panel open (like the character panel, or your bags, etc.)
- You are dragging an item or spell (to put on the action bar)
- Your action bar is not on page 1
- You mouse over any part of the action bar

3) This addon also tweaks the following, to compliment your new, nearly UI-free experience:

- Chat: Buttons fade away together with chat background
- Minimap: Small cosmetic change to zone text (see screenshot)
- Minimap: Zoom buttons hidden, since you can now instead use the mousewheel to zoom
- Minimap: Have options to hide minimap as well (see options.lua)
- Raid manager: Is hidden until you need it


You may be familiar with a popular addon that achieve these same things, but with a fantastic UI to boot:

King Kong Frame Fader

For a long time I used Kong to achieve my close-to-perfect UI (following the ideas explained above), but even with a couple manual config file hacks, eventually edge cases cropped up where Kong wasn't enough for me any more. Specifically I wanted fade-out to occur after a small delay instead of immediately after mousing out of the region (a feature that has already been acknowledged by Kong's maintainer), and I wanted two conditions that didn't exist: 1) the presence/absence of other UI panels and 2) dragging an item or spell with the mouse.

Instead of outright imitating Kong--which, again, has just a fantastic UI for in-game configuration--I've instead created "the programmer's Kong".

Since noUI is plugged straight into the WoW API, you can hide/show frames from anywhere in code in any manner possible--with delays, fades, timings, etc., whatever you can code. You are not limited to what a GUI can configure--no interface is best interface--but to make changes to the defaults you will of course need to know a thing or two about addons.


This mod is two different things:

1) Out-of-the-box: If you like the pre-configured features as listed above, then just use noUI as-is. Chances are high you'll like it!
2) Some assembly required: But if you have some ideas of your own, then read on to learn how to use this mod's extremely simple framework to do anything you want:

Well, let me tell you: This mod is barely a mod. The core of it is just a simple framework for keeping track of some lists.

The first list is a list of frames. Frames that are added to this list may be hidden:

ObservedFrames: {
    1) PlayerFrame
    2) MainMenuBar

^ Here the frames PlayerFrame & MainMenuBar has been added to the ObservedFrames list.

In addition, each frame added to this list gets its own list in turn:

ObservedFrames {
    PlayerFrame {
        1) "LowHP"
        2) "LowMana"
    MainMenuBar {
        1) "Mouseover"

^ Here the strings "LowHP" & "LowMana" has been added to the PlayerFrame list, and the string "Mouseover" has been added to the MainMenuBar list.

The list that each frame gets could be called that frame's visibility conditions. Only if a frame's visibility conditions list is empty will that frame be hidden.

The visibility conditions list consists of arbitrary strings, like "LowHP", "Mouseover" and "BagsOpen". Each string element in the visibility conditions list is unique, so even if you add several "LowHP" strings to a frame's visibility conditions, there will only be one "LowHP" element in that frame's visibility conditions list.

And that's pretty much it!

Wherever you want--in any event, function hook, etc.--you just add a string to any frame's visibility conditions when that frame has a reason to be visible, and then remove that same string again when that reason is no longer actual. For example:

On event PLAYER_REGEN_DISABLED,   add "InCombat"   to PlayerFrame

Now the PlayerFrame's visibility list is not empty when regen is disabled, which means the PlayerFrame will be visible when in combat.

On event PLAYER_REGEN_ENABLED, remove "InCombat" from PlayerFrame

Then, after removing the "InCombat" string when regen resumes, the PlayerFrame's visibility conditions list may or may not be empty, depending on whether other conditions (strings) has been added to its visibility list elsewhere.


  • To post a comment, please or register a new account.
Posts Quoted: