5
22
Fork
You've already forked reka
2
Emacs-based window manager for river. Mirror of https://code.tvl.fyi/about/tools/emacs-pkgs/reka
  • Rust 79.4%
  • Emacs Lisp 19.2%
  • Nix 1.4%
Vincent Ambo 90e89c2f51 docs(reka): add doc strings to all exposed functions
Most of these are not valuable for users, except for the ones related to
intercept prefixes, but it's better than having an empty docs window.
Change-Id: Icd46f4bfeb52758b29a4e9eccafaf45ac0b11e9e
Reviewed-on: https://cl.tvl.fyi/c/depot/+/14146
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2026年04月19日 12:20:28 +00:00
lisp docs(reka): add doc strings to all exposed functions 2026年04月19日 12:20:28 +00:00
protocol chore(reka): update river protocols to latest dev 2026年03月07日 16:09:23 +00:00
src docs(reka): add doc strings to all exposed functions 2026年04月19日 12:20:28 +00:00
.gitignore rust: implement basic emacs<>wm, and wm<>river communication 2026年02月21日 14:11:49 +03:00
Cargo.lock chore(reka): use released version of emacs crate 2026年03月18日 21:28:24 +00:00
Cargo.toml chore(reka): use released version of emacs crate 2026年03月18日 21:28:24 +00:00
default.nix chore(reka): use released version of emacs crate 2026年03月18日 21:28:24 +00:00
LICENSE both: add GPL-3.0-or-later license 2026年02月27日 16:19:00 +03:00
README.md docs(reka): update readme with status & issue tracking info 2026年03月17日 07:45:14 +00:00

reka

reka lets emacs' logic just flow into river. It is a window manager inside of Emacs for the Wayland world.

screenshot of reka

Background

I spent many years using EXWM, it was great but quite wonky. At some point Wayland became unavoidable (I really need per-monitor fractional scaling!) and I switched to niri, which is one of the highest quality pieces of software in the world.

At some point my friend ezemtsov wrote EWM, which is a full Emacs compositor running as a dynamic module inside of Emacs. It's a great project, but I wanted to see if we can avoid the complexity of a full compositor implementation with the river WM protocol, and classic brain-coding.

What else ... the name? Oh, it's obvious to Russian speakers.

Status

Most things work, and I use reka as my daily driver. The main feature that is still missing is floating windows. There are likely still some bugs and rough edges outside of my particular configuration, though, so be ready for that.

There is no simulation key support, this will need a new protocol on the river side.

Reka does not expose any input or output management to Emacs Lisp right now, and I'm not sure that it will. River has external tools (channel for input management, and kanshi for output management) that are sufficient for me.

If you want something more fully featured, look in the direction of EWM instead!

Using this

You should be a sufficiently committed person to use this. There is no hand-holding!

First, get the source either from TVL directly, or from the mirror:

# clone directly from TVL:
git clone https://code.tvl.fyi/depot.git:/tools/emacs-pkgs/reka.git
# or clone from Codeberg mirror:
git clone https://codeberg.org/tazjin/reka.git

After that, build the Rust project (you need pkg-config and libxkbcommon), and make yourself a script that launches Emacs approximately like this:

emacs --directory $reka_src/target/release --directory $reka_src/lisp ...

and then pass that script to river's -c flag on launch. In your Emacs config, make sure to (require 'reka) and then (reka-enable).

Contributing

The upstream code location is in the TVL monorepo. Issues can be reported to the TVL bug tracker for those that have an account here, or on the Codeberg mirror.

Reka follows the standard TVL contribution guidelines. Patches must be written by real humans using fleshy brains.