Skip to content

WindowManager

github-actions[bot] edited this page Oct 15, 2025 · 2 revisions

Create and manage browser windows, control window behavior and appearance.

Overview

The Electron.WindowManager API provides comprehensive control over browser windows in your Electron application. It handles window creation, management, and coordination with the application lifecycle.

Key Methods

Window Creation

CreateWindowAsync(string)

Parameters:

  • loadUrl (optional) - URL to load in the window. Defaults to "http://localhost"

Returns: The created BrowserWindow instance

Description: Creates a new browser window with default options.

CreateWindowAsync(BrowserWindowOptions, string)

Parameters:

  • options - Window configuration options
  • loadUrl (optional) - URL to load in the window. Defaults to "http://localhost"

Returns: The created BrowserWindow instance

Description: Creates a new browser window with custom options.

Browser View Management

CreateBrowserViewAsync()

Returns: The created BrowserView instance

Description: Creates a new browser view with default options.

CreateBrowserViewAsync(BrowserViewConstructorOptions)

Parameters:

  • options - Browser view configuration options

Returns: The created BrowserView instance

Description: Creates a new browser view with custom options.

Properties

IsQuitOnWindowAllClosed

Type: bool

Description: Controls whether the application quits when all windows are closed. Default is true.

BrowserWindows

Type: IReadOnlyCollection

Description: Gets a read-only collection of all currently open browser windows.

BrowserViews

Type: IReadOnlyCollection

Description: Gets a read-only collection of all currently open browser views.

Usage Examples

Basic Window Creation

// Create window with default options
var mainWindow = await Electron.WindowManager.CreateWindowAsync();

// Create window with custom options
var settingsWindow = await Electron.WindowManager.CreateWindowAsync(new BrowserWindowOptions
{
    Width = 800,
    Height = 600,
    Show = false,
    Title = "Settings",
    WebPreferences = new WebPreferences
    {
        NodeIntegration = false,
        ContextIsolation = true
    }
}, "https://localhost:5001/settings");

Window Management

// Get all windows
var windows = Electron.WindowManager.BrowserWindows;
Console.WriteLine($"Open windows: {windows.Count}");

// Configure quit behavior
Electron.WindowManager.IsQuitOnWindowAllClosed = false; // Keep app running when windows close

// Handle window lifecycle
Electron.App.WindowAllClosed += () =>
{
    Console.WriteLine("All windows closed");
    if (Electron.WindowManager.IsQuitOnWindowAllClosed)
    {
        Electron.App.Quit();
    }
};

Browser View Integration

// Create browser view
var browserView = await Electron.WindowManager.CreateBrowserViewAsync(new BrowserViewConstructorOptions
{
    WebPreferences = new WebPreferences
    {
        NodeIntegration = false,
        ContextIsolation = true
    }
});

// Add to window
await mainWindow.SetBrowserViewAsync(browserView);
await browserView.WebContents.LoadURLAsync("https://example.com");

// Set view bounds
await mainWindow.SetBoundsAsync(browserView, new Rectangle
{
    X = 0,
    Y = 100,
    Width = 800,
    Height = 400
});

Window Options Configuration

// Comprehensive window options
var options = new BrowserWindowOptions
{
    Width = 1200,
    Height = 800,
    MinWidth = 600,
    MinHeight = 400,
    MaxWidth = 1920,
    MaxHeight = 1080,
    X = 100,
    Y = 100,
    Center = true,
    Frame = true,
    Title = "My Application",
    Icon = "assets/app-icon.png",
    Show = false,
    AlwaysOnTop = false,
    SkipTaskbar = false,
    Kiosk = false,
    TitleBarStyle = TitleBarStyle.Default,
    BackgroundColor = "#FFFFFF",
    DarkTheme = false,
    Transparent = false,
    WebPreferences = new WebPreferences
    {
        NodeIntegration = false,
        ContextIsolation = true,
        EnableWebSQL = false,
        Partition = "persist:electron",
        ZoomFactor = 1.0f,
        DevTools = true
    }
};

Multi-Window Applications

// Create main window
var mainWindow = await Electron.WindowManager.CreateWindowAsync(new BrowserWindowOptions
{
    Width = 1200,
    Height = 800,
    Show = false
});

// Create secondary window
var secondaryWindow = await Electron.WindowManager.CreateWindowAsync(new BrowserWindowOptions
{
    Width = 600,
    Height = 400,
    Parent = mainWindow,
    Modal = true,
    Show = false
});

// Load different content
await mainWindow.WebContents.LoadURLAsync("https://localhost:5001");
await secondaryWindow.WebContents.LoadURLAsync("https://localhost:5001/settings");

// Show windows when ready
mainWindow.OnReadyToShow += () => mainWindow.Show();
secondaryWindow.OnReadyToShow += () => secondaryWindow.Show();

Related APIs

Additional Resources

Clone this wiki locally