The fact that pop os decided to use this for their upcoming cosmic desktop is the main reason I'd consider this over druid/xilem. It looks quite cool, although definitely not quite ready for prime time.
yeah, pop's investment in the project is a major positive. I see Iced more as something that can be used today if it fits the project's needs while xilem/etc are more on the research project side for the moment.
@@tui3264 I recently tried out Vizia, which has a combination of Iced's message-update-style mutation and Druid's lens-style data binding. It felt pretty good.
My opinion of Iced after following it for a few years is that it still needs to get multiline text and general formatting before it's worth looking at seriously.
iced is like that one library i could not find much on, except the reddit posts by a few who swear on it, when i researched gui libraries (which probably lead to programmers are also human to include it in their rust sketch). thank you for taking a look on it.
The experience building a small Iced app seems good, even if the documentation is majorly lacking right now. You definitely have to be willing to read code in the git repo, even if just the examples, and dive through the docs.rs page to work with it though.
@@chrisbiscardi to be fair, that was my experience with all gui libraries i looked at, but iced was especially undocumented :D I also agree to all your points, I hope one day you make a comparison between multiple and select the top 3 or sth :) atm. i personally can't decide which to take, so for now I play with leptos and egui, but I am really bad at guis, the best experience I had in my life was Qt.
@@RogerValor leptos and egui are both solid choices. Personally I went with Leptos for a couple sites recently and its been working out well. I feel like leptos and egui have slightly different applications, with egui's domain being closer to something like bevy_inspector_egui. Rerun.io is using it for similar applications. and Leptos' domain being cross-platform desktop apps with Tauri (as an electron replacement) or websites on the internet.
I'd love to see a video on Slint, which is another Rust-based GUI toolkit created by the guys behind QT. It's a very forward-looking framework, which delegates a QML-like DSL for describing the UI, and an FFI layer that can allow business logic to be programmed in any language that has bindings for it (Rust, C++, JavaScript).
I could potentially do a video on slint, I've been following them since they were sixtyfps. The only issue is that I'd have to spend a bunch of time reading, digesting, and talking about their licensing and I don't really feel like doing that 😅 so every time the video comes up as an option I end up just pushing it off to work on something else.
Slint is the one I'm most hyped about, I quite like the QML approach, but find the overall Qt ecosystem horrendous, specially how it solely works with C++ (yes there are bindings for other languages, but they're either abandoned or really half baked and not production ready), so something that takes that approach, but is made to work on better languages (also not just Rust, I like how they plan on having bindings for more languages) and has less baggage is really exciting
Somewhat similar to Flutter, when normal Dart language is used to build UIs, with `if` statements, etc. Of course Flutter has much more widgets, hot reload, etc. But I'm currently curious about Rust, nice to see that it gets UI frameworks too.
Nice one. I really really liked the webdev-callouts! There is so much I already take for granted by mostly building websites (like tabbing to other fields in a form, ...). The web is amazing.
a bloody hard framework to learn at the moment but I appreciate all the effort they're putting in, hopefully it sticks around long enough to fill in the guide and mature a bit more as what cryptowatch have done with it is impressive which is why I am motivated to keep plucking away at it. The widget library is a bit immature, there's only just been a table developed and the code to implement it is crazy hard so you're basically left waiting for the author of the library to get around to do it. Implementing themes is a PITA though and structuring elm apps is quite hard as it gets more complex. The debug layout feature is cool I never knew about it til now.
very true. I think native cross-platform desktop applications are Hard Problems in general and prefer using web technology for projects I actually have to ship, specifically because dealing with available widgets or functionality like "multi-line text", etc is already there and ready to use. I'm hopeful for projects like Iced, etc, especially with the prominence of wgpu in the Rust ecosytem, but features like accessibility, keyboard access, etc are also really important to me.
After testing it, i was quite overwhelmed by the amount of search and code to change background of a button. Documentation and some macros would be welcomed for newcomers!
That's a nice introduction to iced, but I was hoping to get some more information on iced 0.10 specifically. Everything shown in this video has been around for ages...
The UI look quite good but I found iced to be very inflexible and to have some unsolved issuse especially with scrolling elements. ( I found bug in scroll that crashes app if scrolled too fast/in no scrollwheel increments)
When people say something like "can use wasm but isn't built for the web", how much of a barrier is implied here? If I make a little application in Iced want to put it connected to my server on a website, is that then a massive hurdle but technically possible, or just a matter of managing backend connectivity?
When compiled to wasm and running in a browser it is rendered to a canvas, not html like with web frameworks. That means you won't have all the accessibility features you expect on the web and it won't look and feel like a regular web app.
@@avsaase i wonder if we ever get the one gui library that manages to transpile into css/html OR turtle to the canvas (which implies it can render to a texture and run as a native app)
Thanks appreciated this video quite a lot, been curious but haven't made the time to find all this myself. Would have for sure taken me longer than watching this video. You mentioned you'd have used tracing. Do you have an example video where you use it? Preferably also how you search and view the traces.
That's definitely one of the reasons I make videos like this. Even though the information is technically available, it takes time to go through it all and not everyone has that "sit at computer and research" time but a lot of people have "play this while I cook", etc time. I use tracing in some videos, like th-cam.com/video/yzKOqLsdQqA/w-d-xo.html but I don't have a dedicated tracing video. I'm planning to make a tracing workshop on Rust Adventure at some point.
@@chrisbiscardi 2 things. Do you have a mailing list I can subscribe to so I can know what's tracing workshop is available? Also I don't usually see your videos on this week in Rust. Would it be ok if I submit them or is there a reason you don't submit them?
@@one.---- If you drop your email in the form at the top of the page on www.rustadventure.dev/ then you'll get email updates for the site. I always forget to submit my videos to TWIR, so would be appreciative of you submitting them if you want to see them there.
No tab control is just an instant no for me. Accessibility is very important. Just try using the ui with just a mouse or just a keyboard and see how it goes. If the framework does not allow for both, it is not something that should be used in a serious manner
There's an extended components library that contains tabs. I believe it's called iced-aw. Though, I agree that the base widgets do still live a little to be desired.
If you understand iced, then Compare should be easy enough to pick up for Android. I like iced previously *because* I come from a native Mobile background and have been using Compose for some time now.
The same reasons you'd want type safety anywhere really. Messages and state having well defined types might be more obvious, but components and widgets also require specific kinds of data to function properly. Types take a certain class of problems and move the time when the issue occurs from runtime to compile time, which makes it easier to detect and fix before shipping.
The fact that pop os decided to use this for their upcoming cosmic desktop is the main reason I'd consider this over druid/xilem. It looks quite cool, although definitely not quite ready for prime time.
yeah, pop's investment in the project is a major positive. I see Iced more as something that can be used today if it fits the project's needs while xilem/etc are more on the research project side for the moment.
The fact that Druid is abandoned and Xilem is a barebones research project probably helps.
floem looks better and has an actual project using it (lapce) and build on same stack but uses solidjs like signals using leptos signal lib I think
@@tui3264can I get a link
@@tui3264 I recently tried out Vizia, which has a combination of Iced's message-update-style mutation and Druid's lens-style data binding. It felt pretty good.
My opinion of Iced after following it for a few years is that it still needs to get multiline text and general formatting before it's worth looking at seriously.
They have a new roadmap, iirc it's planned for the 0.11 release
@@hermannpaschulke1583I thought advanced text handling was added in this release (0.10)
@@hermannpaschulke1583 *_Finally!_*
There is no 0.11 release, going straight to 0.12 from 0.10. Multi line support is available right now via the text-editor widget (PR #2123)
iced is like that one library i could not find much on, except the reddit posts by a few who swear on it, when i researched gui libraries (which probably lead to programmers are also human to include it in their rust sketch). thank you for taking a look on it.
The experience building a small Iced app seems good, even if the documentation is majorly lacking right now. You definitely have to be willing to read code in the git repo, even if just the examples, and dive through the docs.rs page to work with it though.
@@chrisbiscardi to be fair, that was my experience with all gui libraries i looked at, but iced was especially undocumented :D I also agree to all your points, I hope one day you make a comparison between multiple and select the top 3 or sth :) atm. i personally can't decide which to take, so for now I play with leptos and egui, but I am really bad at guis, the best experience I had in my life was Qt.
@@RogerValor leptos and egui are both solid choices. Personally I went with Leptos for a couple sites recently and its been working out well. I feel like leptos and egui have slightly different applications, with egui's domain being closer to something like bevy_inspector_egui. Rerun.io is using it for similar applications. and Leptos' domain being cross-platform desktop apps with Tauri (as an electron replacement) or websites on the internet.
I'd love to see a video on Slint, which is another Rust-based GUI toolkit created by the guys behind QT. It's a very forward-looking framework, which delegates a QML-like DSL for describing the UI, and an FFI layer that can allow business logic to be programmed in any language that has bindings for it (Rust, C++, JavaScript).
I could potentially do a video on slint, I've been following them since they were sixtyfps. The only issue is that I'd have to spend a bunch of time reading, digesting, and talking about their licensing and I don't really feel like doing that 😅 so every time the video comes up as an option I end up just pushing it off to work on something else.
@@chrisbiscardi Just wanted to say that a slint video would be great!
For desktop UI relm4 or gtk4 is also pretty nice. Also Slint should not be forgotten either (similar to QT and QML).
Slint is the one I'm most hyped about, I quite like the QML approach, but find the overall Qt ecosystem horrendous, specially how it solely works with C++ (yes there are bindings for other languages, but they're either abandoned or really half baked and not production ready), so something that takes that approach, but is made to work on better languages (also not just Rust, I like how they plan on having bindings for more languages) and has less baggage is really exciting
Somewhat similar to Flutter, when normal Dart language is used to build UIs, with `if` statements, etc.
Of course Flutter has much more widgets, hot reload, etc.
But I'm currently curious about Rust, nice to see that it gets UI frameworks too.
Great video, would love to see more on Iced. 👍🏼👍🏼👍🏼
Nice one. I really really liked the webdev-callouts! There is so much I already take for granted by mostly building websites (like tabbing to other fields in a form, ...). The web is amazing.
a bloody hard framework to learn at the moment but I appreciate all the effort they're putting in, hopefully it sticks around long enough to fill in the guide and mature a bit more as what cryptowatch have done with it is impressive which is why I am motivated to keep plucking away at it. The widget library is a bit immature, there's only just been a table developed and the code to implement it is crazy hard so you're basically left waiting for the author of the library to get around to do it. Implementing themes is a PITA though and structuring elm apps is quite hard as it gets more complex. The debug layout feature is cool I never knew about it til now.
very true. I think native cross-platform desktop applications are Hard Problems in general and prefer using web technology for projects I actually have to ship, specifically because dealing with available widgets or functionality like "multi-line text", etc is already there and ready to use.
I'm hopeful for projects like Iced, etc, especially with the prominence of wgpu in the Rust ecosytem, but features like accessibility, keyboard access, etc are also really important to me.
After testing it, i was quite overwhelmed by the amount of search and code to change background of a button. Documentation and some macros would be welcomed for newcomers!
The way of theming things is horrible I agree
Cross-platform? Rust? No-web? Sign me up!
Could you show an example on how to show Bevy content into an Iced widget?
They sold me by modularity. I didn't know it is split into parts for end-users and GUI developers
Hi! Can you do a "one year later" kind of video for iced?
Great video! Can you please make a video about egui, its a great immediate mode GUI library / framework - would like to hear your thoughts on it!
I have an egui video already! -- th-cam.com/video/1zucERQjg0Q/w-d-xo.html
That's a nice introduction to iced, but I was hoping to get some more information on iced 0.10 specifically. Everything shown in this video has been around for ages...
ah, sorry you didn't get what you wanted out of it. I'll try to put a bit more focus on the changes when 0.11 comes out.
@@chrisbiscardi It's still a good video though, so thanks! :) I think I just expected something different because of the version number in the title.
The UI look quite good but I found iced to be very inflexible and to have some unsolved issuse especially with scrolling elements. ( I found bug in scroll that crashes app if scrolled too fast/in no scrollwheel increments)
very nice demonstration!
When people say something like "can use wasm but isn't built for the web", how much of a barrier is implied here? If I make a little application in Iced want to put it connected to my server on a website, is that then a massive hurdle but technically possible, or just a matter of managing backend connectivity?
When compiled to wasm and running in a browser it is rendered to a canvas, not html like with web frameworks. That means you won't have all the accessibility features you expect on the web and it won't look and feel like a regular web app.
@@avsaase then its like flutter web, it can run sure but can you recommend it ??? nah
@@avsaase i wonder if we ever get the one gui library that manages to transpile into css/html OR turtle to the canvas (which implies it can render to a texture and run as a native app)
@@avsaase Dunno, the docs say it uses the DOM.
Great video, just what i was looking for?
At least better than the atrocious gtk-rs that most swear it's a godsend
Thanks appreciated this video quite a lot, been curious but haven't made the time to find all this myself. Would have for sure taken me longer than watching this video. You mentioned you'd have used tracing. Do you have an example video where you use it? Preferably also how you search and view the traces.
That's definitely one of the reasons I make videos like this. Even though the information is technically available, it takes time to go through it all and not everyone has that "sit at computer and research" time but a lot of people have "play this while I cook", etc time.
I use tracing in some videos, like th-cam.com/video/yzKOqLsdQqA/w-d-xo.html but I don't have a dedicated tracing video. I'm planning to make a tracing workshop on Rust Adventure at some point.
@@chrisbiscardi 2 things. Do you have a mailing list I can subscribe to so I can know what's tracing workshop is available? Also I don't usually see your videos on this week in Rust. Would it be ok if I submit them or is there a reason you don't submit them?
@@one.---- If you drop your email in the form at the top of the page on www.rustadventure.dev/ then you'll get email updates for the site.
I always forget to submit my videos to TWIR, so would be appreciative of you submitting them if you want to see them there.
No tab control is just an instant no for me. Accessibility is very important. Just try using the ui with just a mouse or just a keyboard and see how it goes. If the framework does not allow for both, it is not something that should be used in a serious manner
There's an extended components library that contains tabs. I believe it's called iced-aw. Though, I agree that the base widgets do still live a little to be desired.
you should cover moonzoon i find it far easier to set up
Is ICED running a JS engine under the hood?
Not that I know of. Were you expecting one?
It uses wgpu for graphics, which relies on genering webassembly for web projects, and vulkan/dx for desktop. No js engine :)
I seriously wished there was a way to use ICED for Android
If you understand iced, then Compare should be easy enough to pick up for Android. I like iced previously *because* I come from a native Mobile background and have been using Compose for some time now.
Why would you even need type safety for GUI design?
The same reasons you'd want type safety anywhere really. Messages and state having well defined types might be more obvious, but components and widgets also require specific kinds of data to function properly. Types take a certain class of problems and move the time when the issue occurs from runtime to compile time, which makes it easier to detect and fix before shipping.
Why wouldn't you
well, for starters, when I get a button, I want to press '.' and see all possible options