Which GUI to use?

Hi,
I tend to focus on the back end side of things.
So I'm not tied to anything.

I noticed makepad which is a GUI that can be used to make mac apps along w wasm (web).
Then I noticed egui.

Now makepad is a bit immature, but getting better and egui seems to be more advanced.
I like the idea of a single GUI for both web and native (mac/windows/linux).
[Note: makepad does mac and wasm now....planned Linux(X11) and Windows]

So what makes sense? Are there others?
Thx

1 Like

This is a really good resource for rust GUIs:

Tauri and Slint are the two that caught my eye

1 Like

I like egui a lot, which gives you windows and linux as well.
There is also flutter Rust bindgen, which works nice.
But in my experience, prototyping in egui is a good first step.

1 Like

I did see slint... but there is a seat license if you're going to use it in production.
(Something to think about, albeit, the pricing seems reasonable. )

It seems that egui has a bit of critical mass.

Thx everyone!

With Slint if your production app is closed source but not embedded, or any app but open-source, you don't have to pay anything or get a license at all. There's a good recent GitHub discussions thread where project founder explains it all:

Keep in mind though that license terms may change in the future. So if anyone is reading this post from the future (which is more likely than reading it as soon as posted) then don't get angry at me.

@burumdev
Yeah... I saw that... its in their pricing.
And I also saw the seat license too. (Which included embedded systems. )

What it means is that if I built an app, ABC and then put it into production ... its royalty free even if they change their licensing down the road. Which is fine. The seat license seems to be for development.

The licensing issue was more of something to give me pause, but I really wanted to see what was out there and in use... slint, egui and makepad.

I do have a license for slint that I got from them and I plan on prototyping with it as well as makepad and egui. Again from a GUI perspective. A simple input field, then a file directory which then gets extended for looking at a specific directory structure (Apache Iceberg) and then some.

Thx

I also primarily am a backend developer. I am not for sure on how good the rust bindings are but I found ImGui super easy to use a backend developer and highly recommend. There is a github repository that appears to have bindings but again cannot speak to their quality: https://github.com/imgui-rs/imgui-rs

after trying several GUI crates in rust (iced, slint, egui...) i've settled on relm4 for most use cases. it's cross platform (although compiling on win/mac can be difficult) and uses GTK 4 (and optionally adwaita). you could always use gtk-rs directly, but relm4 gives you a nice TEA layer on top of the direct GTK bindings. if you prefer the design architecture of iced (widgets create messages which run updates which modify state which renders widgets) to something like egui (imperative functions modify state directly), you'll feel right at home with relm4.

GTK is old and therefore very capable - it handles a lot of things, like accessibility, multiple windows, complex widgets, and lists with thousands of rows (or more) really well. a lot of rust toolkits struggle with some or all of those.

this is, of course, a matter of opinion, but i'm a huge fan of the adwaita look, too. you even get the GNOME HIG if you want to reference some tips used by production applications.

there's a matrix room where you can ask questions about relm4 and get support. the lead dev's usually there and responds pretty quickly.

i'd say the main drawback is that the documentation is a bit lacking and you'll often find yourself reading examples from gtk-rs or even examples in C to understand widget behaviour. i have a tab open to the relm4 book at all times whenever i'm writing a relm4 app, but it doesn't cover anything.

1 Like

I'll look into it.
Right now I'm playing first w slint because I want something quick and dirty where I focus on the back end stuff and then will take it and see about egui and makepad.

I'm looking first for mac and then wasm for everything else. My Linux servers are headless and are sitting in a different room (too much heat and while quieter than rackmount stuff, still a bit of noise. )

In terms of documentation... there's a lack of it all around.
So that's par for the course.

1 Like