01
Headless-ядро
Чистая машина состояний с событиями. Рисуйте чем угодно — или ничем, и тестируйте в Node.
headless-оконный менеджер · 0 зависимостей
Тащить, растягивать, прилипать, сворачивать, отменять — настоящий рабочий стол внутри страницы. Каждое окно здесь это работа самой библиотеки. Возьмите любое.
тащите заголовок к краю для прилипания · ⌘⌥← / → прилипание · ⌘Z отмена · F6 обход · ? помощь
01 — собери окно
Полноценный редактор: слева разметка, CSS и размещение, справа — живое окно. Тяните его, перекрашивайте, копируйте код или отправьте на рабочий стол выше.
02 — возможности
Ядро хранит состояние, DOM-слой двигает пиксели, ваш фреймворк рисует содержимое. Любую часть можно заменить.
01
Чистая машина состояний с событиями. Рисуйте чем угодно — или ничем, и тестируйте в Node.
02
Половины, четверти, трети и разворот при броске к краю, плюс магнетизм 8px к соседям.
03
Каждое взаимодействие это одна запись истории. Перетаскивание — одна отмена, а не шестьдесят.
04
Раскладывайте окна по виртуальным столам. Фокус переносит вас на нужный стол.
05
Сериализация в JSON, восстановление обратно или плагин persist с версионированными миграциями.
06
Роли, метки, ловушка фокуса для модалок, управление с клавиатуры и live-регион, который озвучивает стол.
07
Pointer events везде, увеличенные зоны захвата на грубом указателе, контекстное меню по долгому нажатию.
08
В комплекте шестнадцать CSS-тем — каждое значение это custom property, а вариант окна переопределяет их для одного окна.
03 — адаптеры
Содержимое окна всегда живёт в вашем дереве компонентов — никакого innerHTML и порталов в пустоту. Адаптеры это тонкий сахар над одной и той же машиной состояний.
04 — рынок
Ниша плавающих окон затихла много лет назад. Ровно поэтому wmkit и существует.
| Честное сравнение | wmkit | react-rnd | dockview | winbox.js |
|---|---|---|---|---|
| Не зависит от фреймворка | да | только react | ядро + React·Vue·Angular | да |
| Headless-ядро | да | нет | нет | нет |
| Зоны прилипания | половины, четверти, трети | нет | док-сетка | нет |
| Отмена и повтор | встроено | нет | нет | нет |
| Рабочие столы | встроено | нет | нет | нет |
| Вкладочные группы | бросок для группировки | нет | ключевая фича | нет |
| Сериализация и восстановление | ядро + плагин | своими руками | да | нет |
| Управление с клавиатуры | движение, размер, прилипание, обход | нет | частично | нет |
| Live-регион для скринридера | да | нет | нет | нет |
| Кто владеет содержимым | ваше дерево | ваше дерево | ваше дерево | innerHTML |
| Размер (brotli) | ~18 кБ | ~15 кБ | ~60 кБ | ~10 кБ |
Проверено 26 июля 2026: последние коммиты, загрузки npm, открытые запросы фич.
pnpm add @surdeddd/wmkit