I play on a desktop with a nice big monitor, and also on a laptop with a much smaller screen while I watch TV.
So far the new UI settings are the same for both, I can’t have a different. If I change it for a character on one computer, it changes it on the other. I have a bunch of characters so it’s a big pain to have to change the UI setting each time I log on.
Is there a way I can have the same per computer, the way some configuration items and the way AddOns save?
I was really hoping the new UI would be fantastic but it’s missing so many things (in addition to this big one) that I guess I will have to continue to use Addons - but unfortunately not all of them are fixed yet.
Apparently the active config is stored server-side on the character instead of on the machine so you’re currently forced to switch it each time.
Curious, do you know if there’s a way to macro changing between saved UI layouts? I don’t play on diff computers, but I do sometimes move between a 27" vs. 34" display, so I have saved UI layouts for each. (Works great, just thinking of if I can make it a button in my UI that I can click vs. going into edit mode each time. Yes, I’m lazy.)
I don’t know offhand, but if there is, then there is also likely a way to do the multiple computers via an addon. Since each computer saves different local settings, you could have the same addon on both computers load the desired UI loadout based on that setting.
That’s all assuming there is a way to do it programmatically. I don’t know the API well enough to say for sure.
You could try a small addon, something like this. Whenever you switch layouts it will store it in a client side variable. When the game loads, it will try to load the layout you last saved. You need to have this addon on both your computers.
Make a folder named LocalLayout in your addons folder, and in it make these files.
LocalLayout.toc
## Interface: 100000
## SavedVariablesPerCharacter: LocalLayoutDB
LocalLayout.lua
LocalLayout.lua
EventUtil.ContinueOnVariablesLoaded(function()
if LocalLayoutDB and LocalLayoutDB.activeLayout then
C_EditMode.SetActiveLayout(LocalLayoutDB.activeLayout)
end
hooksecurefunc(C_EditMode, "SetActiveLayout", function()
local layouts = C_EditMode.GetLayouts()
LocalLayoutDB = { activeLayout = layouts.activeLayout }
end)
end)
Thanks! I had to make a small change, though – setting the active layout immediately upon variables being loaded appears to be too soon. I got it working using this instead:
local layloFrame = CreateFrame("FRAME", "LayLo_frame")
layloFrame:RegisterEvent("PLAYER_LOGIN")
layloFrame:SetScript("OnEvent", function()
local layoutInfo = C_EditMode.GetLayouts()
if LocalLayoutDB and LocalLayoutDB.activeLayoutSaved and layoutInfo.activeLayout ~= LocalLayoutDB.activeLayoutSaved then
print("Switching active layout.")
C_EditMode.SetActiveLayout(LocalLayoutDB.activeLayoutSaved)
end
end)
hooksecurefunc(C_EditMode, "SetActiveLayout", function()
local layoutInfo = C_EditMode.GetLayouts()
LocalLayoutDB = { activeLayoutSaved = layoutInfo.activeLayout }
end)
Also, for anyone interested, if you change “SavedVariablesPerCharacter” in toc to just “SavedVariables”, this lets you change your layout across all characters at once! Enjoy!
Also, you may also want to hook the ACTIVE_TALENT_GROUP_CHANGED event as well as when you change spec’s for the first time, it defaults to a default layout. I have a modified version of above that I wrote that I’m also hooking this on to deal with switching specs.
Sorry I know its been a few days but could you possibly share that code? I’m in the same situation as OP and switch specs a lot.