It's been a little while I haven't posted anything here but I'm not dead yet ! In fact I'll be playing Shadowlands even though I'm not particularly hyped about it. As for every expansion, I took some time to figure out things I could improve on my UI, so here is what I got.
1. Use Details add-on to run code
I didn't make an addon for every little snippet you will find in this guide. You can add what you want into the autorun console of Details. To do so, open Details options, click on the "Auto Run Code" tab. This is a text editor that will run your code on login so you don't have to make macros for everything. Don't change what is already there, simply paste your code at the bottom, click Save and do a /reload.

2. Target buff and debuff size
At some point in BfA they reduced the size of buff and debuff icons on your target frame. It is now too small for my liking. If you feel the same, use the snippet below. I set it to a square of 22 pixels.
hooksecurefunc("TargetFrame_UpdateBuffAnchor", function(_, name, i) _G[name..i]:SetSize(22, 22) end);
hooksecurefunc("TargetFrame_UpdateDebuffAnchor", function(_, name, i) _G[name..i]:SetSize(22, 22) end);

3. Hide error messages
This one I was already using but if you didn't know about it, you can hide the red error messages in the middle of your screen.
UIErrorsFrame:UnregisterEvent("UI_ERROR_MESSAGE");

4. Casting bar size
Slight change for my part, but some players like to have bigger cast bars. For the example I grew it by 50% (1.5).
FocusFrameSpellBar:SetScale(1.5);
TargetFrameSpellBar:SetScale(1.5);

5. Size of buffs and debuffs
If you want to increase the size of your buff and debuffs, this does the trick. Once again, 1 is default, 1.2 is 20% bigger.
BuffFrame:SetScale(1.2);

6. Position of the target of target frame
By default, the target of target frame can cover one of your target buff if they have more than one line. To avoid this, we can move it to the right like so.
TargetFrameToT:ClearAllPoints();
TargetFrameToT:SetPoint("BOTTOMRIGHT", TargetFrame, "BOTTOMRIGHT", 10, -20);

7. Improved action bar
It's meant to work with the default blizzard actionbar. What it does is fading away spells that are ready to use (out of cooldown) and without a proc (glowing effect). Thus you can see your cooldowns more efficiently.
You can change a few settings, if you want to enable it on the 2 bars on the right of your screen, you need to set TakuScope.bEnableOnRightBars to true.
If you don't want to hide your hotkeys, you can set TakuScope.bAlwaysHideHotKey to false. It will only hide it when the spell is on cooldown then.
You can also tweak the alpha level to your ease by setting TakuScope.fAlphaLevel between 0.1 and 1.
If you don't want your experience/reputation bar to be faded, remove StatusTrackingBarManager:SetAlpha(0.1);
If you don't want your Rogue stance button to be hidden, remove StanceButton1:SetAlpha(0);
If you're a druid or a paladin with multiple stance buttons, you can fade them or hide them with StanceButtonX:SetAlpha(Y); Replace X with the stance button 1 .. 2 ... and Y with the opacity from 0 to 1.
Code below !
-- Hide stance button ?
StanceButton1:SetAlpha(0);
-- Hide MainMenuBar background
MainMenuBarArtFrame.LeftEndCap:Hide();
MainMenuBarArtFrame.RightEndCap:Hide();
MainMenuBarArtFrameBackground:Hide();
ActionBarDownButton:Hide();
ActionBarUpButton:Hide();
MainMenuBarArtFrame.PageNumber:Hide();
-- Fade exp/rep bars ?
StatusTrackingBarManager:SetAlpha(0.1);
local TakuScope = {}
TakuScope.Frame = CreateFrame("Frame", nil, UIParent)
-- GLOBAL SETTINGS HERE
TakuScope.fAlphaLevel = 0.3; -- 0.1 to 1
TakuScope.bAlwaysHideHotKey = true; -- true or false
TakuScope.bEnableOnRightBars = false; -- true or false
function TakuScope:HideActionBarButtonIfCDReady()
local lActionSlot;
for lActionSlot = 1, 12 do
local start, duration, enable = GetActionCooldown(lActionSlot);
if (duration < 2 and _G["ActionButton" .. lActionSlot].overlay == nil) then
_G["ActionButton" .. lActionSlot]:SetAlpha(self.fAlphaLevel);
if not self.bAlwaysHideHotKey then
_G["ActionButton" .. lActionSlot .. "HotKey"]:SetAlpha(1);
else
_G["ActionButton" .. lActionSlot .. "HotKey"]:SetAlpha(0);
end
else
_G["ActionButton" .. lActionSlot]:SetAlpha(1);
_G["ActionButton" .. lActionSlot .. "HotKey"]:SetAlpha(0);
end
end
for lActionSlot = 61, 72 do
local start, duration, enable = GetActionCooldown(lActionSlot);
if (duration < 2 and _G["MultiBarBottomLeftButton" .. lActionSlot - 60].overlay == nil) then
_G["MultiBarBottomLeftButton" .. lActionSlot - 60]:SetAlpha(self.fAlphaLevel);
if not self.bAlwaysHideHotKey then
_G["MultiBarBottomLeftButton" .. lActionSlot - 60 .. "HotKey"]:SetAlpha(1);
else
_G["MultiBarBottomLeftButton" .. lActionSlot - 60 .. "HotKey"]:SetAlpha(0);
end
else
_G["MultiBarBottomLeftButton" .. lActionSlot - 60]:SetAlpha(1);
_G["MultiBarBottomLeftButton" .. lActionSlot - 60 .. "HotKey"]:SetAlpha(0);
end
end
for lActionSlot = 49, 60 do
local start, duration, enable = GetActionCooldown(lActionSlot);
if (duration < 2 and _G["MultiBarBottomRightButton" .. lActionSlot - 48].overlay == nil) then
_G["MultiBarBottomRightButton" .. lActionSlot - 48]:SetAlpha(self.fAlphaLevel);
if not self.bAlwaysHideHotKey then
_G["MultiBarBottomRightButton" .. lActionSlot - 48 .. "HotKey"]:SetAlpha(1);
else
_G["MultiBarBottomRightButton" .. lActionSlot - 48 .. "HotKey"]:SetAlpha(0);
end
else
_G["MultiBarBottomRightButton" .. lActionSlot - 48]:SetAlpha(1);
_G["MultiBarBottomRightButton" .. lActionSlot - 48 .. "HotKey"]:SetAlpha(0);
end
end
if self.bEnableOnRightBars then
for lActionSlot = 25, 36 do
local start, duration, enable = GetActionCooldown(lActionSlot);
if (duration < 2 and _G["MultiBarRightButton" .. lActionSlot - 24].overlay == nil) then
_G["MultiBarRightButton" .. lActionSlot - 24]:SetAlpha(self.fAlphaLevel);
if not self.bAlwaysHideHotKey then
_G["MultiBarRightButton" .. lActionSlot - 24 .. "HotKey"]:SetAlpha(1);
else
_G["MultiBarRightButton" .. lActionSlot - 24 .. "HotKey"]:SetAlpha(0);
end
else
_G["MultiBarRightButton" .. lActionSlot - 24]:SetAlpha(1);
_G["MultiBarRightButton" .. lActionSlot - 24 .. "HotKey"]:SetAlpha(0);
end
end
for lActionSlot = 37, 48 do
local start, duration, enable = GetActionCooldown(lActionSlot);
if (duration < 2 and _G["MultiBarLeftButton" .. lActionSlot - 36].overlay == nil) then
_G["MultiBarLeftButton" .. lActionSlot - 36]:SetAlpha(self.fAlphaLevel);
if not self.bAlwaysHideHotKey then
_G["MultiBarLeftButton" .. lActionSlot - 36 .. "HotKey"]:SetAlpha(1);
else
_G["MultiBarLeftButton" .. lActionSlot - 36 .. "HotKey"]:SetAlpha(0);
end
else
_G["MultiBarLeftButton" .. lActionSlot - 36]:SetAlpha(1);
_G["MultiBarLeftButton" .. lActionSlot - 36 .. "HotKey"]:SetAlpha(0);
end
end
end
end
TakuScope.Frame.TimeSinceLastUpdate = 0;
TakuScope.Frame:SetScript("OnUpdate", function(self, elapsed)
self.TimeSinceLastUpdate = self.TimeSinceLastUpdate + elapsed;
if (self.TimeSinceLastUpdate > 0.1) then
TakuScope:HideActionBarButtonIfCDReady();
self.TimeSinceLastUpdate = 0;
end
end)

Final words, reach out to me on twitter @Druidsmoker if you have any problems ! 🙂