I dislike the presentation of the default bags but don’t like one-bag solutions so I wrote a bag wrangler that allows me to change the scale and position of them (including the bank bags).
It’s not its own addon, but is embedded in a startup addon I use to house little things like that.
Because it’s not intended for general distribution, it’s pretty much either going to require modification for anyone else to use or they’ll have to have ElvUI installed (I use ElvUI’s Bags anchor to help me with positioning).
Defined elsewhere:
MyData.Functions = {}
BagModule
local AddOnName, MyData = ...
local f = MyData.Functions
MyData.BagScale = 0.70
function f:GetScale()
return (MyData.BagScale or 1.00)
end
function f:SetScale(inScale)
MyData.BagScale = (inScale or 1.00)
end
function f:ApplyBagOverrides(scaleVal)
local TL, TC, TR, LC, CC, RC, BL, BC, BR =
"TOPLEFT", "TOP", "TOPRIGHT",
"LEFT", "CENTER", "RIGHT",
"BOTTOMLEFT", "BOTTOM", "BOTTOMRIGHT"
local widthFactor = 191
local heightFactor = 383
local bags = {
{TL, ElvUIBagMover , BR, (-5 * widthFactor) + 28, heightFactor},
{TL, ContainerFrame1 , TR, -7, 0},
{TL, ContainerFrame2 , TR, -7, 0},
{TL, ContainerFrame3 , TR, -7, 0},
{TL, ContainerFrame4 , TR, -7, 0},
{TL, BankFrame , TR, 0, 0},
{LC, ContainerFrame6 , RC, 0, 0},
{LC, ContainerFrame7 , RC, 0, 0},
{LC, ContainerFrame8 , RC, 0, 0},
{TL, ContainerFrame6 , BL, 0, 0},
{LC, ContainerFrame10, RC, 0, 0},
{LC, ContainerFrame11, RC, 0, 0},
}
for i = 1, #bags do
local bag = _G["ContainerFrame"..i]
bag:SetScale(MyData.BagScale)
bag:SetMovable(true)
bag:SetUserPlaced(true)
bag:ClearAllPoints()
bag:SetPoint(unpack(bags[i]))
bag:SetMovable(false)
hooksecurefunc(bag, "SetPoint", function(self)
if not self.moving then
self.moving = true
self:SetMovable(true)
self:SetUserPlaced(true)
self:ClearAllPoints()
self:SetPoint(unpack(bags[i]))
self:SetMovable(false)
self.moving = nil
end
end)
hooksecurefunc(bag, "SetScale", function(self)
if not self.scaling then
self.scaling = true
self:SetScale(MyData.BagScale)
self.scaling = nil
end
end)
OpenAllBags()
CloseAllBags()
end
end