summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorAdam Malczewski <[email protected]>2026-06-14 18:10:00 +0900
committerAdam Malczewski <[email protected]>2026-06-14 18:10:00 +0900
commitf1dc82460fac283e9823e349f221036544d58e2c (patch)
tree4d38f0f92f2870db4a4460eeddcfe138d983c59f
parent1e1d62ec28828d11e924e5e0047041df8ed8edfc (diff)
downloadunbox-f1dc82460fac283e9823e349f221036544d58e2c.tar.gz
unbox-f1dc82460fac283e9823e349f221036544d58e2c.zip
docs: add logo, refresh status, document extensions
Add the unbox logo to the README header. Replace the stale planning/harness status with the current state (slices 0-5b done, stage dock landed). Add an Extensions table, useful CLI flags, and the asset hot-reload dev workflow.
-rw-r--r--README.md50
-rwxr-xr-xreadme-assets/unbox_logo.pngbin0 -> 368049 bytes
2 files changed, 46 insertions, 4 deletions
diff --git a/README.md b/README.md
index e0487eb..2eec54b 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,8 @@
-# unbox
+<p align="center">
+ <img src="readme-assets/unbox_logo.png" alt="unbox logo" width="240">
+</p>
+
+<h1 align="center">unbox</h1>
An experimental Wayland desktop environment for the Panasonic CF-AX3 Let's
Note (touchscreen convertible, i5-4300U Haswell, 3.7 GiB RAM, Artix Linux +
@@ -12,10 +16,14 @@ C++ contracts. Tiers: `kernel → core → standard`.
- **Stack:** C++23 · Meson/Ninja · wlroots 0.20 (`wlr_scene`, GLES2
renderer) · RMLUi on a sibling GLES 3.2 EGL context · toml++ · doctest
-- **Status:** planning / harness complete — see `tasks.md` for the live
- slice status and `notes/plan.md` for the full design + rationale.
+- **Status:** in active development. The kernel boots, extension host +
+ typed bus are in place, and core extensions exist (xdg-shell, layer-shell,
+ keybindings, stage-dock). Slices 0–5b are done; the Stage-Manager-style
+ left-edge dock (slice 10) is landed and real-seat verified on the CF-AX3.
+ See `tasks.md` for live slice status and `notes/plan.md` for the full
+ design + rationale.
-## Building (slice 1 will make this real)
+## Building
```sh
sudo pacman -S meson ninja cmake ccache # one-time toolchain
@@ -24,6 +32,40 @@ ninja -C build
./build/packages/host-bin/unbox # runs nested under labwc
```
+For UI work, run with the source assets and hot-reload armed — editing a
+`.rml`/`.rcss` under `assets/` reloads the live surface (no recompile/restart):
+
+```sh
+UNBOX_ASSET_DIR="$PWD/assets" UNBOX_DEV=1 ./build/packages/host-bin/unbox
+```
+
+Useful flags: `-s <cmd>` spawns a client at startup (e.g. `-s foot`),
+`--config <path>` points at an explicit `unbox.toml`, `--ui-demo` loads the
+throwaway demo surface. `UNBOX_HOT_RELOAD` is accepted as an alias for
+`UNBOX_DEV`.
+
+## Extensions
+
+The kernel names **no** concrete feature. Everything user-facing is an
+extension that talks to the kernel through typed C++ contracts (its public
+header under `packages/<unit>/include/`). Each declares a tier and its
+dependencies; `host-bin` is the composition root that installs them in
+dependency order.
+
+| Extension | Tier | Depends on | What it does |
+|---|---|---|---|
+| **ext-xdg-shell** | core | — | Window management: the `xdg_shell` global, toplevel/popup lifecycle, click/tap-to-focus, pointer/touch routing, interactive move/resize, and the neutral hide/show minimize mechanism. Exports a `Service` with toplevel mapped/unmapped/focused events. |
+| **ext-layer-shell** | core | — | `wlr-layer-shell-unstable-v1` for external clients (panels, launchers, wallpapers, OSKs). Maps protocol layers onto scene bands and keeps each output's usable area current. The anchor/exclusive-zone math is a pure core other units (e.g. tiling) can reuse. |
+| **ext-keybindings** | core | xdg-shell, stage-dock | Config-driven shortcuts from `unbox.toml`, hot-reloaded live. Defaults: tap **Super** → launcher (fuzzel), **Alt+Tab / Alt+Shift+Tab** → focus rotation over all windows, **Ctrl+Alt+Backspace** → quit. A leaf consumer — exports nothing. |
+| **ext-stage-dock** | standard | xdg-shell | Stage-Manager-style left-edge dock of minimized-window previews, revealed by a left-edge swipe. Snapshots windows into RMLUi textures; exports a `Service::toggle_visible()`. |
+
+Bindings live in `unbox.toml` (sample at the repo root; copy to
+`~/.config/unbox/unbox.toml`). A missing or malformed config falls back to
+the compiled-in defaults — keys never drop.
+
+Planned but not yet built: taskbar, launcher, on-screen keyboard, window
+tiling, wallpaper, notifications. See `tasks.md` for the live roadmap.
+
## Documentation
- **Design & rationale:** `notes/plan.md`
diff --git a/readme-assets/unbox_logo.png b/readme-assets/unbox_logo.png
new file mode 100755
index 0000000..9b42757
--- /dev/null
+++ b/readme-assets/unbox_logo.png
Binary files differ