Skip to content

Runtime detachable widget plugin for Unreal Engine. Allows UUserWidgets to exist in native OS windows independently from the main game viewport.

License

Notifications You must be signed in to change notification settings

Brody-Clark/MultiWinUI

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MultiWinUI

Demo

Runtime detachable widget plugin for Unreal Engine

MultiWinUI allows you to create native OS windows at runtime and display regular UUserWidgets inside them, fully independent of the main game viewport. Useful for tools, dashboards, editors, in-game UI overlays, or multi-monitor UI experiences.


Features

  • Spawn UUserWidgets in standalone, native OS windows
  • Windows stay active independently of the main viewport
  • Supports mouse/keyboard input just like any Slate window
  • Simple Blueprint-accessible interface

Getting Started

1. Install the Plugin

Place the MultiWinUI folder into your project:

YourProject/
 └─ Plugins/
     └─ MultiWinUI/

Enable it in Edit > Plugins.

Restart the editor.


Blueprint Usage

Create a widget in a new window

Blueprints:

CreateWidgetInNewWindow Node

Parameters:

  • WidgetClass — Type of UUserWidget to spawn
  • Player — Reference to owning player
  • WindowConfig — Slate Window options
  • OnWindowClosedDelegate — Event invoked when the new slate window is closed

Returns:

  • CreatedWidget — The widget instance created in the new window

C++ Usage (optional)

#include "MultiWinUIBlueprintLibrary.h"

// Define a callback for the window close event
UFUNCTION()
void HandleWindowClosed(UUserWidget* ClosedWidget);

// ...


FSlateWindowConfig config;
config.SaneWindowPlacement = true;
config.ClientSize = FVector2D(400, 300);
config.Title = FText::FromString("Window");

FOnWindowClosedDelegate WindowClosedDelegate;
WindowClosedDelegate.BindUFunction(this, "HandleWindowClosed");

UUserWidget* Widget =
    UMultiWinUIBlueprintLibrary::ConstructWidgetInNewWindow(
        WidgetClass, GetOwningPlayer(), config, WindowClosedDelegate);

Architecture Overview

  • SlateWindowSubsystem (internal) Handles low-level window creation, destruction, and Slate integration. Hidden from Blueprints by design.

  • MultiWinUIBlueprintLibrary (public Blueprint API) Entry point for all Blueprint functions.


Mobile and console platforms do not support native windows.


Known Limitations

  • Native OS windows cannot render 3D scenes
  • DPI scaling behavior may vary per OS
  • Some platforms may restrict window parenting or always-on-top behavior
  • Some slate window options may change redraw behavior during resizing events

License

Copyright (c) 2025 Brody Clark Licensed under the MIT License


Support & Contributions

Issues and pull requests are welcome! If you want to add new features, feel free to open a discussion.

About

Runtime detachable widget plugin for Unreal Engine. Allows UUserWidgets to exist in native OS windows independently from the main game viewport.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published