Tiny river window manager examples
  • Rust 35.5%
  • C 30.9%
  • Go 17.1%
  • Janet 15.5%
  • Meson 1%
Find a file
Isaac Freund 00e6eedba2
All checks were successful
builds.sr.ht/alpine Job completed
builds.sr.ht/archlinux Job completed
c: ensure children are reaped
2026-04-05 14:14:29 +02:00
.builds ci: build rust implementation 2026-03-12 10:49:57 +01:00
c c: ensure children are reaped 2026-04-05 14:14:29 +02:00
go go: format 2026-03-18 19:15:00 +01:00
janet janet: improve janet-pm installation instructions 2026-03-26 09:26:59 +01:00
LICENSES docs: follow REUSE spec 2026-02-28 10:26:21 +01:00
rust rust: don't pass format strings to expect() 2026-03-30 22:05:27 +02:00
README.md docs: improve tinyrwm specification 2026-03-10 14:22:44 +01:00

tinyrwm

A tiny river window manager, implemented in various languages.

This project aims to help people quickly get started with their own river window manager by following an example in their language of choice.

Contributions adding examples in new languages are very welcome!

All tinyrwm implementations should:

  • Implement the same tiny feature set
  • Be written in the style most idiomatic to their language
  • Use the standard build/packaging approach for the given language ecosystem
  • Be released under the Zero-Clause BSD license

Happy hacking!

Tiny feature set

Keyboard bindings:

  • Super+Space: Spawn the foot terminal
  • Super+q: Close the focused window
  • Super+n: Cycle keyboard focus through windows
  • Super+Escape: Exit the Wayland session

Pointer bindings:

  • Super+Left Click: Interactive move
  • Super+Right Click: Interactive resize

Additionally, clicking on a window must give the window keyboard focus and raise it above all other windows.

This is not a formal specification, tinyrwm.c is the canonical implementation and its behavior should be matched where this specification is unclear/insufficient.