headless-оконный менеджер · 0 зависимостей

ОКНА в вашем веб-приложении

Тащить, растягивать, прилипать, сворачивать, отменять — настоящий рабочий стол внутри страницы. Каждое окно здесь это работа самой библиотеки. Возьмите любое.

Документация

тащите заголовок к краю для прилипания · ⌘⌥← / → прилипание · ⌘Z отмена · F6 обход · ? помощь

01 — собери окно

Ваша разметка, наш движок

Полноценный редактор: слева разметка, CSS и размещение, справа — живое окно. Тяните его, перекрашивайте, копируйте код или отправьте на рабочий стол выше.

02 — возможности

Всё, что есть у рабочего стола

Ядро хранит состояние, DOM-слой двигает пиксели, ваш фреймворк рисует содержимое. Любую часть можно заменить.

01

Headless-ядро

Чистая машина состояний с событиями. Рисуйте чем угодно — или ничем, и тестируйте в Node.

02

Прилипание и магнетизм

Половины, четверти, трети и разворот при броске к краю, плюс магнетизм 8px к соседям.

03

Отмена и повтор

Каждое взаимодействие это одна запись истории. Перетаскивание — одна отмена, а не шестьдесят.

04

Рабочие столы

Раскладывайте окна по виртуальным столам. Фокус переносит вас на нужный стол.

05

Сохранение

Сериализация в JSON, восстановление обратно или плагин persist с версионированными миграциями.

06

Доступность

Роли, метки, ловушка фокуса для модалок, управление с клавиатуры и live-регион, который озвучивает стол.

07

Готово к тачу

Pointer events везде, увеличенные зоны захвата на грубом указателе, контекстное меню по долгому нажатию.

08

Темы

В комплекте шестнадцать CSS-тем — каждое значение это custom property, а вариант окна переопределяет их для одного окна.

03 — адаптеры

Одно ядро, шесть способов взять его в руки

Содержимое окна всегда живёт в вашем дереве компонентов — никакого innerHTML и порталов в пустоту. Адаптеры это тонкий сахар над одной и той же машиной состояний.

vanillaattachDesktop + attachWindow
reactuseWindowManager, useDesktop
vueuseDesktop с template ref
svelteэкшены use:desktop
solidсигналы и ref-колбэки
angularсигналы и DestroyRef

04 — рынок

Честное сравнение

Ниша плавающих окон затихла много лет назад. Ровно поэтому wmkit и существует.

Честное сравнениеwmkitreact-rnddockviewwinbox.js
Не зависит от фреймворкадатолько reactядро + React·Vue·Angularда
Headless-ядроданетнетнет
Зоны прилипанияполовины, четверти, третинетдок-сетканет
Отмена и повторвстроенонетнетнет
Рабочие столывстроенонетнетнет
Вкладочные группыбросок для группировкинетключевая фичанет
Сериализация и восстановлениеядро + плагинсвоими рукамиданет
Управление с клавиатурыдвижение, размер, прилипание, обходнетчастичнонет
Live-регион для скринридераданетнетнет
Кто владеет содержимымваше деревоваше деревоваше деревоinnerHTML
Размер (brotli)~18 кБ~15 кБ~60 кБ~10 кБ

Проверено 26 июля 2026: последние коммиты, загрузки npm, открытые запросы фич.

Дайте приложению окна

pnpm add @surdeddd/wmkit