River is a Wayland compositor written in Zig that emphasizes a non-monolithic architecture.
River addresses the complexity of traditional monolithic compositors by decomposing functionality into separate, independent components. This modular approach allows each part of the compositor to be developed, tested, and maintained in isolation while still working together as a cohesive system. The compositor is built on wlroots, a library that provides core Wayland functionality, which River leverages to avoid reimplementing low-level graphics and protocol handling.
River suits developers and users who want a lightweight, composable Wayland environment without the overhead of a full desktop environment. It works well for those who prefer tiling window management and are comfortable with configuration through code or command-line tools. The project appeals to people interested in systems programming who want to understand how a compositor works or who need a minimal base for building custom Wayland workflows. Because River is non-monolithic, it allows users to swap or extend individual components rather than being locked into a single integrated design.
River's development shows consistent activity with regular commits addressing bug fixes, feature refinements, and architectural improvements. The project maintains responsiveness to user-reported issues and incorporates feedback into updates. Development follows a pragmatic approach focused on stability and usability rather than rapid feature expansion. The codebase demonstrates attention to code quality and architectural coherence, with changes that reflect deliberate design decisions about the compositor's structure.