Rust GUI ecosystem overview (Qt, Electron, Gtk...)

Hi Rust community!

I'm currently building a desktop App for Bloom: The free and open source Google in Rust and looked for information about what is the best GUI option available today for Rust. I didn't find nothing convincing/enough argued so I made my own research.

It was a lot of work so I want to share it to the community :grinning:

I tested the following frameworks: Electron + Neon, Rust program + Qt dynamic, Rust Program + Qt static, Gtk, Cpp program + Rust lib static + Qt static, Cpp program + Rust lib static + Qt dynamic, Electron + NodeJS Cpp Addon, Electron + FFI.

for the following criteria: Ease of build, Build time, Bundle size, Ease of deployment, Rust interoperability, Speed of development, RAM usage, CPU usage, Security, Look, Responsive UI, Framework fixability, Platforms support, Built-in features, 3rd party components, Debugging, Testing, Community, License.

Here are the details, ranking and code examples: https://gitlab.com/z0mbie42/rust_gui_ecosystem_overview

Best regards,
Sylvain Kerkour (z0mbie42)

4 Likes

This is a great analysis. You put a lot of work into the various systems but the results are surprising.

Electron + x has mean memory use? Every Electron application I've come across is a memory hog.

Also, I like the look of Gtk. I'm between laptops and miss GNOME Shell. :frowning: But yeah the default look on Windows is not so pretty. Here's a modern Gtk program: https://github.com/pop-os/popsicle/

1 Like

I've rated electron-x mean for memory use because here we are talking to only implement the ui in Web technologies, and all the business logic in Rust, thus the overhead is not so huge. Most of electron apps implement the business logic in JS and that's why they are memory hogs. For example, for a simple hello world, Qt (QML, which embed it's own JS engine) and electron use the same amount of memory.

The problem of Gtk (which Rust bindings are really great) is the lack of customability of the UI. It's really far from what can expect from an end user oriented UI framework in 2019.