Tiny-wlhs: A Haskell-Driven Wayland Compositor (Seeking Contributors!) This thread originated in the Haskell Wlroots Bindings discussion. Introduction tiny-wlhs began as an experiment to explore Haskell bindings for wlroots. We took the simple tinywl C compositor and turned it into a Haskell-contr...
In the process of forking Xmonad, it was discovered that a lot of work would need to be done in getting a Haskell compositor working. Currently, the compositor is being worked on using Tiny-wlhs: A Haskell-Driven Wayland Compositor (Seeking Contributors!)
tiny-wlhs began as an experiment to explore Haskell bindings for wlroots. We took the simple tinywl C compositor and turned it into a Haskell-controlled shared library. This approach lets us incrementally port C code to Haskell while keeping a working window manager. The immediate feedback from a functional compositor is invaluable during development and provides something solid to work with. You can find the project on GitHub: https://github.com/l-Shane-l/tiny-wlhs 25
Why not Haskell? It’s lazy and pure and compiles down to actual safe C. It’s like Rust but better (not to mention how the language LOOKS on screen…it’s VERY readable and intuitive). Furthermore, the entire paradigm that it strictly enforces makes parallelism possible by default.
Also, I don’t know if you’ve played around with the config formats of any of the tiling window managers but if you do, I think you’ll understand. The formats they use are SO ugly in comparison to my declarative config. Plus, Haskell will give you clear error messages when you make a mistake in your config.
Try that with a Polybar config: 🤮
I could go on all day about why Haskell in particular is uniquely well suited to this task. Xmonad is the only window manager that is formally verified. Can anyone else even achieve that with another tiling window manager? Probably not since Haskell is one of the only languages that is fast enough AND can make guarantees about runtime properties that not even Rust can.