TeamSaltyBois-UIScaleAndDeclutter icon

UIScaleAndDeclutter

Resize any part of your interface individually, and remove the bugged edit mode boxes.

Last updated 5 hours ago
Total downloads 3
Total rating 0 
Categories Mods
Dependency string TeamSaltyBois-UIScaleAndDeclutter-1.0.0
Dependants 0 other packages depend on this package

This mod requires the following mods to function

BepInEx-BepInExPack-5.4.2305 icon
BepInEx-BepInExPack

BepInEx pack for Mono Unity games. Preconfigured and ready to use.

Preferred version: 5.4.2305

README

UI Scale and Declutter — v1.0.0

Note: Configuration generated on first run with plugin installed.

Description

This mod gives every movable panel its own configurable size setting, plus one global multiplier over the top. Shrink the chat log, leave the party frame alone, halve the action bar. Whatever suits your screen.

While I was in there I also fixed the bugged editing handles. Erenshor draws a border around every movable element while you are rearranging your interface and hides them all again when you are done, but two of them never got the message and stayed visible for the whole session. The mod fixes that, and only while UI editing is off, so you lose nothing. Turn editing on and every handle appears exactly as it should.

Works alongside my other mods.

Note: I am a plebian, and have not made it to raids yet. I have added the raid panels, but have been unable to personally test them.


Features

Scaling

  • A size setting for every panel the game ships, and a global multiplier over all of them. The two multiply, so you can set an overall size and then correct the handful of panels that want to be different.
  • Panels are named in plain English rather than by the internal names the game uses, with the internal name written beside each setting in case you ever need it.
  • The whole list is written to your config on first launch, so you are not logging in and opening every window to find out what exists.
  • Dragging still works normally at any size. The scale is applied to the same object the game's own UI editing moves, so nothing about positioning changes.

Decluttering

  • The bugged outlines and corner boxes are gone by default, and can be turned back on.
  • Editing handles still appear normally while UI editing is on, because the mod only tidies up while it is off.
  • Only images the mod switched off are ever switched back on, so anything the game deliberately hid stays hidden.

Awkward cases

  • The compass has no drag handle, so the game never registers it as a movable element. It gets a size setting anyway.
  • The raid frame is swapped in place of your party frame when a raid starts, so it is never on screen alongside it. It gets its own setting rather than following the party frame's.
  • Anything else the game does not treat as movable can be named in Extra.Panels and it will be scaled too.

Configuration

All settings are stored in BepInEx/config/com.erenshor.uiscaleanddeclutter.cfg. Edit this file while the game is closed, as settings are read once at startup.

Sizes

  • [Scale] All — Default: 1, range 0.42.5
    Multiplies the size of your whole interface. Every panel setting multiplies with this one.

  • [Scale HUD] — Default: 1 each, range 0.42.5
    One entry for every part of the interface that is always on screen: PlayerFrame, PartyFrame, TargetFrame, EngagedTarget, PetFrame, ActionBar, BuffBar, CastBar, MenuBar, DPSMeter, ChatLog, CombatLog and Compass.

  • [Scale Windows] — Default: 1 each, range 0.42.5
    The same again for the windows that come and go: Inventory, QuestLog, GuildWindow, GroupBuilder, and RaidFrame, which the game swaps in place of your party frame while you are raiding.

Declutter

  • Enabled — Default: true
    Removes the leftover outlines and corner boxes. Set false to leave the interface exactly as the game draws it.

  • FixKnownStrays — Default: true
    Handles the outline around your player frame, which is a slightly different problem. Every other border is registered with the game and hidden correctly; that one is not, so nothing in vanilla can switch it off in any mode. Set false if you would rather keep it.

  • ExcludePanels — Default: empty
    Comma separated panel names to leave completely alone. Either the friendly name or the game's own name works.

  • StraySprites — Default: empty
    Comma separated sprite names to treat as stray outlines wherever they appear. Your player frame's box is drawn with Facebook_Frame, so putting that here would catch every other use of it at once. It is a blunt instrument, which is why it is off.

  • ExtraHide — Default: empty
    Hides one specific child object, written as Panel/Child. You should not need this. It is here so that a game update moving something cannot leave you waiting on me for a fix.

Extra

  • Panels — Default: empty
    Comma separated GameObject names to scale even though the game does not treat them as movable. Turn on Diagnostics, open the window you care about and press the dump key, and the log tells you what it is called.

Troubleshooting

  • Diagnostics — Default: false
    Turns on the dump key and all discovery logging. While it is off, none of that code runs at all, not even the key check.

  • DumpKey — Default: F10
    Lists every panel found, every open window with no drag handle, and the contents of anything named in DeepDumpPanels.

  • DeepDumpPanels — Default: empty
    Comma separated panel names to list exhaustively: every image inside them, with name, whether it is switched on, colour, size and sprite. This is how a stray border gets identified in the first place.


Requirements

  • BepInEx 5.4.23.5

Installation

Mod manager: install normally.

Manual:

  1. Install BepInEx for Erenshor.
  2. Create the folder BepInEx\plugins\UIScaleAndDeclutter\.
  3. Place UIScaleAndDeclutter.dll in that folder.
  4. Launch the game once. The config file generates with every panel already listed.

Compatibility

One Harmony patch on one method.

  • Other mods: a conflict is only possible with another mod that also scales or restyles the interface. Anything that reads your UI or touches other parts of the game will coexist fine.

  • Game updates: no panel is hardcoded. The mod works from the game's own register of movable elements, so new panels are picked up on their own and removed ones simply stop appearing. A renamed panel gets a fresh setting under its new name rather than breaking anything.

  • Adding or removing mid playthrough: safe. Nothing is written to your character, and panel positions are stored by the game itself, so removing the mod puts your interface back to vanilla sizing on the next launch.


Methods Patched

  • DragUI.Update — Postfix
    DragUI is the component every movable element carries, and its update already runs once per frame for each of them. The patch takes the panel it is handed, applies that panel's size, and finishes the tidy up the original started. It does not read or change a single value the game calculates.

Performance

Because settings are read at startup and never change while you play, a panel's size is applied once and then left alone.

That is what lets the patch be as cheap as it is. It checks a single flag and returns, and only does real work on the frame after something actually changes: a new panel appearing, UI editing being toggled, or a sanity check that runs once a second in case another mod moves something.

Component lookups happen once per panel, ever. Nothing is searched or allocated during play, and with Diagnostics off the diagnostic code is never reached.


Notes

  • Settings need a restart to take effect. That is a deliberate trade rather than an oversight, and it is why the mod can sit idle with 0 performance hits during play.
  • A few windows, the spellbook and the map among them, are not movable in vanilla either, so the game never registers them and they are not scaled. Add them by name through Extra.Panels if you want them sized.
  • Naming something in Extra.Panels that sits inside a panel you are already scaling makes the two multiply. That is usually what you want for a sub panel, and the log says so when it happens. Naming something that contains a scaled panel is refused outright, since that would quietly double scale everything inside it.
  • At the very small end of the range, around 0.4, a few elements the game positions by code rather than by parenting can drift slightly, showing up as a stray square that follows a shrunken window at the wrong offset.