Ark (Runtime) ============= Ark is a long-running Wayland compositor runtime with a hot-reloadable world interface. Responsibilities ---------------- - Owns the Wayland display lifecycle and wlroots setup. - Loads a world shared object (`.so`) at runtime and routes input/surface events to it. - Supports hot-reloading the world without restarting the compositor. World interface -------------- The runtime defines a C ABI that worlds must implement (load/start/teardown, event handlers, and optional state marshal/unmarshal for hot reload). The ABI is defined in: - `ark/include/world.h` Worlds should include: - `ark/include/world_interface.h` Key files --------- - `ark/src/wl.c`: compositor setup + event loop + world callbacks. - `ark/src/world.c`: dynamic loading, lifecycle, and hot-reload logic. - `ark/include/world.h`: C ABI the world must implement. Building -------- Ark is built via the top-level CMake project: ```sh cmake -S .. -B ../build cmake --build ../build --target ark ``` Running ------- Use the top-level `run` target (builds the bundled world and launches Ark): ```sh cmake --build ../build --target run ```