l4ud/egooe
v0.1.0 ·
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
Installation
Install with Wally by adding to your wally.toml:
EgooE = "capedbojji/iris-plasma@0.1.0"
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 340×580 window covering every widget category: Text (label, heading, wrapped text) · Buttons (normal, sized, disabled) · Checkboxes (controlled, uncontrolled, disabled) · Sliders · Text Input · Row layouts · Separators · Conditional visibility toggle
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 |
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)