An idiomatic GUI library inspired by Elm and based on gtk4-rs. Relm4 is a new version of relm that's built from scratch and is compatible with GTK4 and libadwaita.
Why Relm4
We believe that GUI development should be easy, productive and delightful.
The gtk4-rs crate already provides everything you need to write modern, beautiful and cross-platform applications.
Built on top of this foundation, Relm4 makes developing more idiomatic, simpler and faster and enables you to become productive in just a few hours.
Our goals
- ⏱️ Productivity
- ✨ Simplicity
- 📎 Outstanding documentation
- 🔧 Maintainability
Documentation
Need help?
If you find yourself having trouble with anything, feel free to ask questions at:
Dependencies
Relm4 depends on GTK4: How to install GTK4.
Ecosystem
Relm4 has two crates that extend the core functionality:
- relm4-macros provides a
widgetmacro that simplifies UI creation - relm4-components is a collections of reusable components you can easily integrate into your application
To use all features, just add this to your Cargo.toml:
= { = "0.4", = ["macros"] }
= "0.4"
Features
The relm4 crate has four feature flags:
| Flag | Purpose |
|---|---|
| macros | Enable macros by re-exporting relm4-macros |
| tokio-rt | Adds the AsyncRelmWorker type that uses an asynchronous update function |
| libadwaita | Improved support for libadwaita |
| all | Enable all features |
Examples
Several example applications are available at relm4-examples/.
📸 Screenshots from the example apps
A simple counter app

use ;
use ;
Projects using Relm4
- fm — A small, general-purpose file manager.
- Done - A simple and versatile to do app.
- Reovim - GUI frontend for neovim.
- NixOS Configuration Editor - A graphical configuration editor for NixOS.
License
Licensed under either of
- Apache License, Version 2.0, (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.
Feedback and contributions are highly appreciated!