Ark (Runtime) ============= Ark is a long-running Wayland compositor runtime with a hot-reloadable soul interface. Responsibilities ---------------- - Owns the Wayland display lifecycle and wlroots setup. - Loads a soul shared object (`.so`) at runtime and routes input/surface events to it. - Supports hot-reloading the soul without restarting the compositor. Soul interface -------------- The runtime defines a C ABI that souls must implement (load/start/teardown, event handlers, and optional state marshal/unmarshal for hot reload). The ABI is defined in: - `ark/include/soul.h` Souls should include: - `ark/include/soul_interface.h` Key files --------- - `ark/src/wl.c`: compositor setup + event loop + soul callbacks. - `ark/src/soul.c`: dynamic loading, lifecycle, and hot-reload logic. - `ark/include/soul.h`: C ABI the soul 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 soul and launches Ark): ```sh cmake --build ../build --target run ```