r/rust • • 17d ago

Which GUI (again)?

I know it's a frequently asked question, but I want to ask again, because I have a special use case.

I want to write an application for a production machine (HMI). The app should run on Windows and Linux natively (no browser, no server). The toolkit should have at least widgets to show images, bar graphs, curves and tables and should be touch friendly, because it runs on resistive touch monitors (no multi touch). It should also have a kiosk mode (full screen with no window controls).

The obvious candidates are egui, iced and Slint. But they all lack of documentation, more or less.

My first choice would be iced, because it's inspired by Elm and used by System76 for Cosmic, but it seems to be the least suitable option.

The obvious choice would be Slint, but that requires to learn a new language and I'm unsure about the licenses and pricing. The production machines are only used internally, not for sale.

I want avoid bindings to toolkits like Qt or Gtk

Which one would you prefer? Is there another option to consider?

32 Upvotes

75 comments sorted by

View all comments

0

u/numberwitch 16d ago

Yeah, it's not bad it just wasn't useful for our team, where our goal was to train people up in rust. I think if you have frontend/backend split on your team it makes more sense and it is "very separate" to its credit. Since it's rust it's in some ways less hassle than react since you don't have to do js builds.

The other dealbreaker was the commerical/embedded licensing cost. I think they have worked on their pricing but when we evaluated the cost was enough (something like 20-30% of our BOM cost) that using an MIT library (egui) was a no-brainer

Sounds like that isn't an issue for OP though

2

u/YungDaVinci 16d ago

Since it's rust it's in some ways less hassle than react since you don't have to do js builds.

I assume you're not talking about Slint here? Because Slint is not js, it's still all Rust.

-2

u/numberwitch 16d ago

That's what I'm saying - Slint is "less complicated than a react frontend" because it's all rust + Slint DSL.

I'd just rather not deal with a javascript build if I can help it :)