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.

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.

Motivation

Why split the window manager to a separate process? I aim to:

Current Status

The first release supporting the river-window-management-v1 protocol will be 0.4.0. The protocol is implemented on river’s main branch and is already robust/feature complete enough for me to use as my daily driver.

The river-window-management-v1 protocol and other river protocol extensions are stable. We do not break window managers.

Currently the only documentation for the river-window-management-v1 protocol is the protocol specification itself. While this is all developers comfortable with writing Wayland clients should need, I’d like to add some more beginner-friendly documentation including a well-commented example window manager before the 0.4.0 release.

If everything goes well with the 0.4.0 release, I expect the following non-bugfix release to be river 1.0.0. After river 1.0.0, all backwards incompatible changes will be strictly avoided.

Donate

If my work on river adds value to your life and you’d like to support me financially you can find donation information here.