l4ud/egooe
v0.1.5 ·
EgooE - A modular UI widget library for Roblox
iris-plasma (improved-garbanzo)
An immediate-mode UI framework for Roblox with Iris visual style and a Plasma-compatible API.
Features
- Plasma-compatible API – same
useInstance,useState,useEffect,useKey,scope,widget,window, etc. - Iris dark theme – Dear ImGui inspired color palette (dark blues, accent blues, transparent frame backgrounds)
- No automatic sizing – all widgets have explicit, fixed pixel sizes (unlike Plasma)
- Modern Roblox UI –
UICorner,UIStroke,UIListLayout,ScrollingFrameused throughout - Interactive demo gallery –
demoWindow()now has inline gallery tab plus dedicated side-window demos - Table widgets – immediate-mode
table,tableRow, andtableCellwith nested widgets, borders, and striping
Installation
Install with Wally by adding to your wally.toml:
EgooE = "capedbojji/[email protected]"
Or sync with Rojo using default.project.json.
Demo Window
The quickest way to see all widgets in action — just call demoWindow() inside your start loop:
local EgooE = require(path.to.EgooE)
local node = EgooE.new(playerGui.ScreenGui)
RunService.Heartbeat:Connect(function()
EgooE.start(node, function()
EgooE.demoWindow()
end)
end)
This opens a gallery window with 2 tabs:
Galleryfor broad inline widget examplesDemosfor dedicated playgrounds that open side windows forwindow,childWindow,table,popup,modal, and layout tests
Quick Start
local EgooE = require(path.to.EgooE)
local node = EgooE.new(playerGui.ScreenGui)
RunService.Heartbeat:Connect(function()
EgooE.start(node, function()
EgooE.window("Demo", function()
EgooE.heading("Hello, Iris!")
EgooE.separator()
EgooE.label("This is a label.")
if EgooE.button("Click me"):clicked() then
print("Button clicked!")
end
local checked = EgooE.checkbox("Toggle me"):checked()
local value = EgooE.slider({ min = 0, max = 100, label = "Speed" })
local handle = EgooE.input({ placeholder = "Type something..." })
if handle:changed() then
print("Input:", handle:value())
end
end)
end)
end)
Widgets
| Widget | Description |
|---|---|
window | Draggable, resizable, scrollable window |
button | Iris-styled click button |
checkbox | Controlled/uncontrolled checkbox |
slider | Horizontal range slider |
input | Text input box |
label | Single-line text display |
heading | Bold section heading |
separator | Horizontal divider line |
row | Horizontal layout container |
childWindow | Inline scrollable panel with clickable header |
table | Immediate-mode table container |
tableRow | Table row builder |
tableCell | Table cell builder for nested widgets |
space | Blank pixel spacer |
portal | Mount children in an arbitrary Instance |
demoWindow | Live showcase of every widget (zero setup) |
Style
The Iris dark theme is applied by default. Override any values per-scope with setStyle:
EgooE.setStyle({
buttonColor = Color3.fromRGB(200, 60, 60),
})
EgooE.button("Danger")
API
Identical to Plasma:
EgooE.new(rootInstance)
EgooE.start(node, fn)
EgooE.beginFrame(node, fn) / continueFrame(handle, fn) / finishFrame(node)
EgooE.scope(fn)
EgooE.widget(fn)
EgooE.useState(initial)
EgooE.useInstance(creator)
EgooE.useEffect(callback, ...deps)
EgooE.useKey(key)
EgooE.createContext(name) / provideContext(ctx, val) / useContext(ctx)
EgooE.useStyle() / setStyle(fragment)