Remix.run Logo
paddy_m 2 hours ago

I'd love to read a writeup of the state of Rust GUI and the ecosystem if you could point me at one.

IshKebab 2 hours ago | parent [-]

https://www.boringcactus.com/2025/04/13/2025-survey-of-rust-...

I started writing a program that needed to have a table with 1 million rows. This means it needs to be virtualised. Pretty common in GUI libraries. The only Rust GUI library I found that could do this easily was gpui-component (https://github.com/longbridge/gpui-component). It also renders text crisply (rules out egui), looks nice with the default style (rules out GTK, FLTK, etc.), isn't web-based (rules out Dioxus), was pretty easy to use and the developers were very responsive.

Definitely the best option today (I would say it's probably the first option that I haven't hated in some way). The only other reasonable choices I would say are:

* egui - doesn't render very nicely and some of the APIs are amateurish, but it's quick and it works. Good option for simple tools.

* Iced - looks nice and seemed to work fairly well. No virtualised lists though.

* Slint (though in some ways it is weird and it requires quite a lot of boilerplate setup).

All the others will cause you pain in some way. I think the "ones to watch" are:

* Makepad - from the demos I've seen this looks really cool, especially for arty GUI projects like synthesizers and car UIs. However it has basically no documentation so don't bother yet.

* Xilem - this is an attempt to make an 100% perfect Rust GUI library, which is cool and all but I imagine it also will never be finished.

nicoburns an hour ago | parent | next [-]

I wouldn't bother watching Makepad. They're in the process of rewriting the entire thing with AI and (it seems to me) destroying any value they has accumulated. And I also suspect Xilem will never be finished.

Beyond egui/Iced/Slint, I'd say the "ones to watch" are:

* Freya

* Floem

* Vizia

I think all three of those offer virtualized lists.

Dioxus Native, the non-webview version of Dioxus is also nearing readiness.

WD-42 2 hours ago | parent | prev | next [-]

I’m currently writing an application that uses virtual lists in GTK: GtkListView, GtkGridView, there may be others. You ruled out GTK because of its looks I guess, I’m targeting Linux so the looks are perfect.

nu11ptr 2 hours ago | parent [-]

Yeah, I need cross platform, and GTK looks quite foreign on Windows/macOS IMO. I toyed with custom themes, but couldn't find any I liked for a cross platform look (wanted something closer to Fluent UI).

chiffaa 2 hours ago | parent | prev | next [-]

I believe latest Iced versions do have a `Lazy` widget wrapper, but I believe that effectively means you need to make your own virtual list on top of it

cess11 2 hours ago | parent | prev [-]

I've been somewhat involved in a project using Iced this week, seems pretty reasonable. Not sure how tricky it would be to e.g. invent custom widgets though.