External Publication
Visit Post

[ANN] Rivulet Window Manager

Haskell Community [Unofficial] April 13, 2026
Source

Just took a quick skim through Wayland.hsc and I like it. I much much prefer the idea of doing that than managing a million raw pointers everywhere and callbacks (the way I currently do it in Rivulet/Manager/Runtime.hs)

Event -> [Request] has a pretty simplicity to it. Pattern match on the [Request], use [] to represent no change, so on. Much nicer than my approach! This project was mostlyan excuse for me to get acquainted with the WriterT monad and some lower-level Haskell than what I usually write, so there are definitely parts where my code is lacking in simplicity. Getting everything in Haskell should be a core priority of Rivulet, and eventually, I’m not opposed to writing a compositor server that conforms to the River protocol or cuts it out entirely. River is great - don’t get me wrong - but long-term, I think a Haskell-based compositor would be the best for the “cool factor.” wlroots bindings are possibly the most pressing thing in this space.

If anyone wanted to take up the rein on writing some kind of wayland wire protocol thing in Haskell, that would probably be the first step, with the River protocol afterwards. Then, we could probably work Rivulet into being almost entirely pure Haskell with little C involved, which would be quite nice. This package is ungodly levels of old and likely completely outdated, so it might be best to write it ourselves from scratch. I would not be opposed to forming a small group chat or other place for Wayland Haskell development (or just keeping it here is fine too) to discuss things.

Discussion in the ATmosphere

Loading comments...