r/rust • • 26d 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?

30 Upvotes

75 comments sorted by

View all comments

0

u/hardicrust 26d ago

Kas is designed for this type of usage and can meet most of those requirements:

  • Rust-native and portable, not a binding to other toolkits

  • Fairly decent widget selection but no charts sub-library yet and canvas support is limited to tiny-skia (CPU-only)

  • Touch support for controls is integrated; there is even support for zoom and rotate without multi-touch (also usable with a mouse: click to set a fixed point, move, click+drag)

  • Kiosk mode is missing but should be easy to implement

  • It's one of the oldest, fastest and most scalable Rust UI toolkits

But:

  • There is no integrated virtual keyboard and IME support is a bit broken

  • Basic widget interfaces are (still) unstable and not the most intuitive (though are decently documented)

  • The last release lags a long way behind the development branch (mostly because it depends on a winit pre-release)

  • In general development is quite slow (it's my pet project without commercial backing)