Layouts, starting layout, sizes and a clock.
A WindowManager.
const windows = createWindowManager({ layouts: createDefaultLayouts({ gap: 8, margin: 0 }) });
windows.state$.subscribe((state) => draw(state.windows));
windows.setArea({ x: 0, y: 0, w: 1440, h: 900 });
windows.open(plan.windowId);
windows.attach(plan.windowId, kernl.mount(plan, frame));
windows.setLayout('columns');
Create kernl's window manager: windows cascade as they open, the person picks a layout from a registry, a narrow area shows one window at a time, and each attached applet is told whether it can be seen and whether it has the person's attention.
It holds no DOM and draws nothing. Feed it the shell's events, draw from
state$, and answerKernlHost.getVisibilitywithvisibilityOf.