Surfaces & coordinates
Surfaces
Section titled “Surfaces”The JouleOS shell presents a workspace of surfaces rather than windows and files. A Surface
is a live object in the single-level store with SurfaceContent, an intent history, and a
capability set. You ask for things through one intent bar; results spawn as surfaces you can
arrange.
Layout modes (native + PWA): free, columns, focus, stack, grid. Each surface carries its own energy attribution — you can see, per surface, what it has cost.
workspace ├─ surface "Welcome to JouleOS" ├─ surface "Fabric Energy Breakdown" ← live joule pie └─ surface "Action chain" ← deterministic step traceCoordinates
Section titled “Coordinates”A coordinate is a place the runtime can lower onto, described by the control vector. The three shipping coordinates:
| Coordinate | Renderer | Persistence | Notes |
|---|---|---|---|
native | winit + wgpu | ~/.jouleos/ arena | energy bridge on :9911 |
browser | WebGPU → Canvas2D | IndexedDB-backed arena | the PWA |
bare-metal | ramfb framebuffer | direct | x86_64-unknown-none, no_std |
The shell crate is no_std + alloc so the same surface logic runs on all three — the renderer is
swapped behind the ShellRenderer trait, not the application code.