Hey guys,

I’m excited to share my modular UI window creation tool that can speed up building games (experiencesor charts)! It’s designed to work with both ScreenGuis and SurfaceGuisand this tool gives you the flexibility to create in-game displaysorganize menusor craft dynamic user interfaces. The modular architecture that it has lets you extend its functionality using pluginsand you can easily swap out prebuilt themes or add your own custom ones.

Main Features

  1. UI Window Creation: You can quickly create UI windows with minimal setup.
  2. Themes: You can use the built-in themes or create your own to match your game’s aesthetic.
  3. Plugins: Optional features that you can add into a window
  4. Apps: There are cool apps packaged inside of this modulelike Color Picker which helps your players pick colors.
  5. SurfaceGui Compatibility: Seamlessly integrate your window into SurfaceGuismaking it great for interactive display screens.
  6. Additional Internal Features: Beyond the visible featuresthe module includes custom header buttonsevent binding/triggeringmanual plugin loadingcustom mouse input handling (specialMouse)and much more.

Here’s a demonstration of most features combined:


(most recent version)

You can get the module hereGitHuband you can test it in the test place

Here are some examples of how to use this module:

  1. Using :create() to quickly create a window:
local window = Windows:create(shopGuiUDim2.new(0.45,0,0.5,0)"Frutiger Aero")
  1. Using .new to construct a bare-bone window
local window = Windows.new(theme or nil):loadPlugin("BaseWindow"):loadPlugin("Header"):loadPlugin("Resize"):loadPlugin("FrostedGlass")
shopGui.Parent = window.canvas
  1. Using the legacy version
Windows:createLegacy(shopGuiUDim2.new(0.45,0,0.5,0)) --themes does not exist in the legacy versiononly spaghetti

I’ve also put a bunch of comments everywhere inside of the module (including the built-in plugins) so it’s easier to understand what it does. Have fun!

30 Likes

this is really cool! i’ll test this out when i get the chance.

1 Like

That’s some mad mathematical + UIDragger stuff I don’t understand :fire:

Besides thatthe animations are very neat and I haven’t seen a proper-made window system like nesting windows inside windowsor resizing nested windows to respect the parent window size.

I have to say this is cool! Just curioushow long did it take you?

2 Likes

Thank you! It took about a year :skull:
I mostly continue this project on my free time so that’s one of the factor. There’s also another factor which is just me putting random math everywhere and hoping that it works for some reasonand try to understand why it works. The one that sticks out the most is using parent relations instead of getting the screen insets. That unlocked a whole loads of possibilitiesfor example the nested windowsauto-collapse and recenter windowscustom containersand keyboard UI Navigation with its sensitivity related to its parent. The only limiting factor to nested windows is Roblox’s nested CanvasGroup limit of 4.

2 Likes

Damnthe free time really did pay off. This is a cool resource I’ve seen in a while so pretty excited to see it.

1 Like

I’ve updated the module to add multitouch support and some other bug fixes. It took a whilebut now there are window.mouse and window.specialMouse!

window.mouse is basically the normal LocalPlayer.mousemeanwhile window.specialMouse is a special mouse that automatically switches modes between ScreenGui and SurfaceGuis. It also makes access to multitouch easiersince it has a feature similar to mouse.Hit but with multitouch capabilities. There are also lots of bugs that I’ve demolishedso hopefully this update will be a convenience!

2 Likes

The test place has been uncopylocked. Feel free to download it! (It’s next to the main module link or here)

Hey guysI’ve updated the module to rewrite the specialMouse. I’ve also added a “launchApp” method along with some pre-installed apps inside of the module as a new feature. Currently there are TemplateApp LauncherNotepadand Speed Clicker.

Here’re some previews of the Notepad app:

Here’s a preview of the Speed Clicker app:

These apps were made very hastilyso there are probably some problems in them that I haven’t discovered yet. They will have a chance to be updated when a new version of the Windows module gets updated.

Hopefully this update will be beneficial to everyone! I’ll be sure to keep developing this module until there are no more cool features that I can think of.

2 Likes

Update 16/12/2024 is out! This update rewrites the Adapt plugin and also upgrades it to respect the container’s borders while removing the liquidify feature. There have also been some internal changessuch as converting table.insert into table[key] so the code looks nicer. The minimizing feature has also been upgradedso you can directly call it using window:minimize()move the window to the floor of the containeror double-clicking the header.

New update is out! Version 21/12/2024 fixes the notepad app and changes how header buttons work. If you have an existing work which uses : to add a header buttonyou can just change it into a . when updating to this version.

Here’s a preview of the updated notepad app:

Hey guysif your studio keeps crashing while scripting with this module (for example querying the window table after it has been created using the . indexer)you should probably disable the “New Luau type solver” beta feature. It does not like this module specifically :sweat_smile:

1 Like

New update is out! This update improves the performance of the module and brings some improvements and bug fixeslike windows on SurfaceGuis placed not at the front face of a part moving incorrectly. One of the performance improvements are massive amounts of windows in the screen. Moving or resizing them will now only cause a few stutters instead of freezes or straight up crashes on the Roblox clients (although Roblox still may crash at an even larger amount). You can view the more complete logs inside of the module. There’s also a new app called Audio Playerwhich plays audio. App Launcher has also been updated to support icons. Sorry for the long wait! I’ve just not had enough free time lately.

Here’s a quick little demonstration of most things that this update brings:

1 Like

I forgot to mention that there are 4 new themes: LeavesCrystalsSilverand Hamburger.

Hey guysjust a quick little update on what I’m currently working on.

I’m finally making the color picker after forgetting it for so long :skull_and_crossbones:

It’ll be a bit similar to the color picker in iOS but with many adjustments so it’s more convenient to use. To use it script-wisejust launch the app using Windows:launchApp("Color Picker"your_theme_or_nil...) where you can put things like NumberValuesPartsFramesCanvasGroupsetc. for transparency and Color3ValuesPartsFramesCanvasGroupsetc. for its color in the ... field. You can change which properties that it’ll change in its appData. It’ll default to the color & transparency of the supported values found in the listand default to white if they’re not found. The color picker also changes all of their colors to the picker’s current color so they all sync.

There’s also a new window managerwhich lets you find and focusdestroyclear allor even rename windows.

They’re currently not done yet as I’ve not polished nor optimized them yetso it’ll only be available on the test place. The color picker icon will get a redesignand its advanced option will be worked on. The window manager will also have little adjustmentsand a new icon will be worked on for it too.

The update has been released! These are a few changes:

There’s a new Color Picker application which lets you pick colors.


To use it script-wiseyou can input instances into the app when launching it so they would sync to the picker’s current color. The first found RGBT values will be used as the starter color (or filled white when not found) when launching.

The Window Manager is also a new app which allows you to closefocusor even rename windows.

There’s also “AltCursor” replacing “hideMouse”which now lets you customize it via themes.

A bit more things like small changes and bug fixes are listed in the update logs inside of the module.

Hopefully this update will be useful!

Hey guyssince no one is really using the window-in-window feature (including me)should I drop support for it? Doing this will make whole semi-transparent canvasestransparent themesand other things possible. Basicallydropping one unused feature in order to give way to two or more features.

  • Yes
  • No
  • Idk man it’s up to you to decide
  • I’m using it! >:(

0 voters

Here’s a comparison (bottom is the change):


Update v30/3/2025 is out! This is a small update primarily for the color picker and a few bug fixes. The color picker now adapts to different sizes to make it even more accessibleespecially for small screens. Here’s a view:

By the wayI will be closing the previous poll tomorrow (if I don’t forget). If any one of you does want this feature in the futurethere’s a chance of it appearing in another poll. Have fun!

Hey guysnew spring update is out! Some animations are overhauled to use spring physics instead of tweens so they would look smoother and more responsive. This is the most obvious in the color picker. AltCursor has also been fixed when using UINavigation. Here’s a quick view of the update:

AlsoI happen to notice that I didin factforgot to close the vote.

1 Like

Hey guysdue to the studio doing the funniI was temporarily unable to continue developing this module. After countless of crashes howeverI did manage to obliterate some bugs and develop a new “Stagelight” theme for the windowswhich looks like something in particular:



Hopefully you guys like it :cook:

1 Like

Sorry for a starkly late reply

This is super cooland I think I’ll be using it for something I’m working on. On an unrelated notewhere did you find the audio for the various UI interaction sounds I hear in the videos? They’re really clean

2 Likes