winbox-go — an HTML5 window manager in Go

A complete Go port of Thomas Wilkerling's WinBox.js, targeting WebAssembly through syscall/js. It builds with both the standard Go toolchain and TinyGo, and ports the whole feature set: drag, 8-direction resize, minimize with split-screen taskbar stacking, maximize, browser fullscreen, modals, DOM mount and unmount, iframes, custom controls and templates, viewport limits, percentage and centered positioning, and every lifecycle callback.

The library is self-contained. The stylesheet is embedded in the Go binary with all control icons inlined as data URIs and injected when the first window is created, so there are no extra assets to serve.

Source code: github.com/0magnet/winbox-go. More Go and WebAssembly projects: magnetosphere.net/software.

winbox-go

WinBox.js fully ported to Go, compiled to WebAssembly — github.com/0magnet/winbox-go

Drag titlebars, resize from all edges and corners, double-click a titlebar to maximize, minimize several windows to see the taskbar stacking. Every window on this page is managed by Go code.

Mounted Fragment

This content was cloned from a hidden element in the page and mounted into the window body by Go.