Ability to offset items and detect changes in the Topbar

Currently it is impossible to move/offset Topbar items.

As shown in the picture, there is no way to set your own offset for Topbar items. In the second picture, I am using my own Chat system which has its own custom Topbar chat button. Unfortunately, the ‘BETA’ label covers it completely.

For cases such as this one, an ability to offset items like these and detect offset changes in CoreGui’s Topbar would be perfect.

Another use case would be adding your own topbar button between the Roblox Menu button and the default chat button.

(This does not include moving the Roblox menu button, only the extra topbar buttons.)


Suggested APIs:

game.StarterGui:SetLeftTopbarOffset(offset: Udim),
game.StarterGui:SetRightTopbarOffset(offset: Udim),
game.StarterGui.LeftTopbarOffsetChanged → passes newOffset: Udim
game.StarterGui.RightTopbarOffsetChanged → passes newOffset: Udim

5 Likes

Roblox make their CoreGuis easier to work with challenge (impossible)

Seriously though Roblox knows people put stuff in the topbar, why did they make an intrusive change like that that’s difficult to work around

3 Likes

Completely disrespectful to dump a beta badge up in the top bar with no communication or regard for games. Roblox already redesigned the top bar once and changed button padding despite a nearly identical but backwards compatible design being trivial to achieve.

We need API to correctly interface with the top bar. There are several buttons developers can enable or disable (emotes, chat, more) and we have no way to programmatically place UI to accommodate their absence or existence. We have to play the game and manually fudge it to the right location, and then copy the numbers back into UI or code.

1 Like

I was thinking of a new GetCore/SetCore method with the same name that allows you to interface with currently rendered elements within the topbar.

This would let you control CoreGui based buttons with a string key, or new elements as the GuiObjects themselves

StarterGui:SetCore("TopbarElements", "Left", {
  "ChatWindowButton",
  meowButton, --Gui Object
  "VoiceChatBetaLabel",
})

The GetCore pair would just return this list (or something else if Roblox changes it). This is forward compatible as to be expected, since it’s a list thats easy to modify. The pair would also not return or being able to control the menu button since Roblox doesn’t like people removing that