Ballmac UI home

Window Manager

A desktop of real windows: focus raises, the title bar drags, edges and corners resize, double-click zooms, the yellow light tucks a window into a tray, and Alt plus arrow keys move and resize from the keyboard.

Notes

Ideas

  • Ship the window manager
  • Drag me by the title bar
  • Resize from any edge
Terminal
$ pnpm build
✓ compiled in 2.1s
$ _
About

Double-click a title bar to zoom. Yellow light minimizes into the tray.

Installation

$ pnpm dlx shadcn@latest add @ballmac/window-manager

Usage

import { WindowManager } from "@/components/ballmac/window-manager"

The full example is in the Code tab above.

Examples

Open and close windows

Window 1

Hello from window 1.

API reference

PropTypeDefault
windows*

The windows. Add an entry to open one; remove it to close it.

ManagedWindow[]—
onClose

Called when a window's close button is pressed. Remove the window from `windows` to actually close it.

(id: string) => void—
children

Content behind the windows, such as desktop icons or a wallpaper.

React.ReactNode—
label

Accessible name of the desktop.

string—
trayLabel

Accessible name of the strip that holds minimized windows.

string—

Also accepts the standard attributes of its root element.

Accessibility

KeyAction
Alt+ArrowMoves the focused window
Alt+Shift+ArrowResizes it
Ctrl/Cmd+W and MClose and minimize
Screen readersEach window is a labelled group; minimized windows are restorable from a named list
Reduced motionWindows appear and minimize without scaling

Use with AI

<WindowManager windows={[{ id, title, content, x, y, width, height, minWidth, minHeight }]} onClose>background</WindowManager>. Add or remove entries to open or close windows. Children render behind the windows. With the shadcn MCP server set up (guide), ask your agent:

Add the Ballmac UI Window Manager (@ballmac/window-manager) to this project with the shadcn MCP, then use it where it fits.

Use it for

  • Interactive OS-style demos
  • Multi-panel tools that need freely arranged windows

Not for

  • Fixed split layouts (resizable)
  • Dialogs (dialog)

Registry JSON: https://ui.ballmac.com/r/window-manager.json

Credits

Free to use in personal and commercial projects.