River is a non-monolithic Wayland compositor. Unlike other Wayland compositors,
river does not combine the compositor and window manager into one program.
Instead, users can choose any window manager implementing the
river-window-management-v1 protocol.
Read my blog post, Separating the Wayland Compositor and Window
Manager, for an in-depth explanation.
There is a list of compatible window managers
on our wiki.
Links
If you are looking for the old dynamic tiling version of river, see
river-classic.
Features
River defers all window management policy to a separate window manager
implementing the river-window-management-v1 protocol. This includes window
position/size, pointer/keyboard bindings, focus management, window decorations,
desktop shell graphics, and more.
River itself provides frame perfect rendering, good performance, support for
many Wayland protocol extensions, robust Xwayland support, the ability to
hot-swap window managers, and more.
The river-window-management-v1 protocol and other river protocol extensions
are stable. We do not break window managers.
Motivation
Why split the window manager to a separate process?
Significantly lower the barrier to entry for writing a Wayland window manager.
Allow implementing Wayland window managers in high-level garbage collected
languages without impacting compositor performance and latency.
Allow hot-swapping between window managers without restarting the compositor
and all Wayland programs.
Promote diversity and experimentation in window manager design.
Strict No LLM / No AI Policy
Use of generative AI/LLMs is strictly forbidden for all contributions to river.
This includes bug reports and comments on the issue tracker.
Donate
If my work on river adds value to your life please consider setting up a
recurring donation through liberapay. This is the best way to make river’s
development sustainable in the long term.
You can also support me with a one-time or monthly donation on github sponsors
or ko-fi though I prefer liberapay as it is run by a non-profit.
Thank you for your support!
Funding
River is funded in part through the NGI0 Commons Fund,
a fund established by NLnet with financial support from the European
Commission’s Next Generation Internet programme.
Learn more at the NLnet project page.