#wayland-compositor #layout #generator #river #views #display #dwindling

bin+lib river-dwindle

A 'dwindling' layout generator for the river Wayland compositor

7 releases (1 stable)

1.0.0 Jan 16, 2024
0.1.5 Jan 12, 2024

#334 in GUI

Download history

70 downloads per month

Custom license

441 lines



A 'dwindling' layout generator for the river Wayland compositor


Each view occupies half (or a larger proportion if configured) of the remaining space on the display after the views above it in the stack have been tiled.

| 1                  | 2                   |
|                    |                     |
|                    |                     |
|                    |                     |
|                    |                     |
|                    +----------+----------+
|                    | 3        | 4        |
|                    |          |          |
|                    |          +----------+
|                    |          | 5        |
|                    |          |          |


This program probably won't be packaged for individual distros. It can be installed by:

Downloading the Binary

GitLab compiles the binary for amd64 automatically. One should be attached to each release - including the latest one.

Just download the binary file and place it somewhere in your PATH.

Compiling the Code

Clone the repository and compile the code:

git clone https://gitlab.com/thom-cameron/river-dwindle
cd river-dwindle
cargo build --release

Then place the resulting executable file in target/release somewhere in your PATH.

Installing with Cargo

Install the program with Cargo from crates.io:

cargo install river-dwindle

Ensure that ~/.cargo/bin is in your PATH.


river must be told to use river-dwindle to lay out views. For example, to change the default layout from rivertile to river-dwindle in a shell script river init file, change:

riverctl default-layout rivertile
rivertile -view-padding 0 -outer-padding 0 -main-ratio 0.5 &

To the following:

riverctl default-layout river-dwindle
river-dwindle --view-padding 0 --outer-padding 0 --ratio 0.5 &


One way to troubleshoot issues is to run river-dwindle in a terminal and watch the error messages it outputs.

Another is to redirect its outputs to a file which can be checked in the event of an error. You can specify how you'd like this to happen in your init file. For example:

riverctl default-layout river-dwindle
river-dwindle --ratio 0.5 &> ~/.local/state/river-dwindle-log &

The above starts the layout generator in the background and saves the messages it outputs to the named file.


This project uses the river-layout-toolkit package to integrate with river. The code was written with reference to a BSP layout written using the same library.


~140K SLoC