RBLXGUI is an open-source GUI library for plugins inspired by Studio Widgets.
Warning: RBLXGUI completely overhauls wigets. if you want something more visually customizable rather than the basic Studio aesthetic, this is probably not for you.
This was a solo project and any help improving or keeping the library up to date would be greatly appreciated!
In order to install this library, drag the latest release into your plugin folder.
You can also clone the repo and build the project with rojo.
rojo build --output "C:\Users\[Username]\AppData\Local\Roblox\Plugins\[Plugin Name].rbxmx"
Another way to install the library is by using HttpService to pull the contents directly from this github project into module scripts. Make sure you have http service from Game Settings
enabled in order for this to work.
--Modified to support nesting
local http = game:GetService("HttpService")
local req = http:GetAsync("https://api.github.com/repos/xa1on/rblxguilib/contents/src")
local jsonSrc = http:JSONDecode(req)
local targetFolder = Instance.new("Folder")
targetFolder.Name = "StudioWidgets"
targetFolder.Parent = game.Workspace
function loopdir(json, folder)
for i = 1, #json do
local file = json[i]
if file.type == "file" then
local name = file.name:sub(1, #file.name-4)
local module = targetFolder:FindFirstChild(name) or Instance.new("ModuleScript")
module.Name = name
module.Source = http:GetAsync(file.download_url)
module.Parent = folder
elseif file.type == "dir" then
local dir = http:GetAsync(`https://api.github.com/repos/xa1on/rblxguilib/contents/{file.path}`)
local dirJson = http:JSONDecode(dir)
local dirFolder = Instance.new("Folder")
dirFolder.Name = file.name
dirFolder.Parent = folder
loopdir(dirJson, dirFolder)
end
end
end
loopdir(jsonSrc, targetFolder)
(Credit to the StudioWidgets repo for the import code)
Element | Description |
---|---|
GUIFrame.lua | Class for all frame elements |
BackgroundFrame.lua | Creates a frame that syncs its color to the current studio theme |
ListFrame.lua | A uniform frame that goes in ScrollingFrames used to house objects |
Page.lua | Creates a page tab in a widget's TitlebarMenu |
PluginWidget.lua | Creates a rblxgui widget |
ScrollingFrame.lua | A self-scaling ScrollingFrame |
Section.lua | A collapsible frame used to house objects |
TitlebarMenu.lua | Menu on widgets that contains it's pages and TitlebarButtons |
Element | Description |
---|---|
GUIObject.lua | Class for all object elements |
Button.lua | Creates a Button |
Checkbox.lua | Toggleable checkbox object that returns true and false |
ColorInput.lua | Object used to input colors using RGB values or ColorPropmt |
InputField.lua | TextBox object with a filtered dropdown menu |
InstanceInputFrame.lua | InputField for adding selected workspace objects |
KeybindInputFrame.lua | InputField for keybinds |
Labeled.lua | Text object that acts as a label for other objects |
ProgressBar.lua | Bar that fills up to represent progress |
Slider.lua | Adjustable slider that returns number values |
Textbox.lua | Creates a TextLabel object |
TitlebarButton.lua | Creates a TitlebarMenu Tab that acts as a button |
ViewButton.lua | Creates a TitlebarButton that allows users to editing widgets, layouts, and themes |
Element | Description |
---|---|
Prompt.lua | Creates a widget that acts as a prompt window and class for all prompt elements |
ColorPrompt.lua | TextPrompt window that allows user to edit colors |
InputPrompt.lua | TextPrompt window with an InputField |
TextPrompt.lua | Prompt with text and buttons |
File | Description |
---|---|
EventManager.lua | Manages plugin events |
InputManager.lua | Keyyboard/mouse input event manager for rblxgui elements |
KeybindManager.lua | Keybind Manager for KeybindInputObjects |
LayoutManager.lua | Layout manager for plugin widget/page layouts in studio |
ThemeManager.lua | Theme manager for rblxgui element colors |
File | Description |
---|---|
GUIElement.lua | Class for all GUI Elements |
GUIUtil.lua | ModuleScript that contains utility functions that dont fit the other categories |
PluginGlobalVariables.lua | ModuleScript that consolidates all variables used globally in the library |
No documentation at the moment, but you should be able to see how everything works in the Example Script.
If anyone actually plans on using this, DM me on Twitter or Discord (@xa1on) if you have any further questions or if you just want to show off what you made.
A lot of my code may be a bit messy and unorganized but I hope you can bear with me since this is my first big project with lua and I feel like a grew a lot in the process of making this. In the future, I might plan on using Fusion to help make this library a bit better to work with.
Available under the Apache 2.0 license. See LICENSE for details.