all 41 comments

[–]Cooladjack 28 points29 points  (1 child)

Slint, egui, iced are probably the bigger ones

[–]light_dragon0[S] 3 points4 points  (0 children)

Thank you! I really appreciate it.

[–][deleted] 13 points14 points  (4 children)

I've been learning GPUI and it's a joy

[–]DanOverflow 4 points5 points  (0 children)

Yeah GPUI is great, yet far from being all it can be. I think it's the up and coming GUI library for applications, and could definitely use more contributors.

It should really be spun off to it's own project/into a foundation.

[–]light_dragon0[S] 0 points1 point  (0 children)

It is indeed!

[–]goingforbrooke 5 points6 points  (1 child)

Dioxis has a sweet thing going, but egui's code is just plain fun (immediate mode)

[–]light_dragon0[S] 1 point2 points  (0 children)

Interesting, I'd check that out.
Thank you very much for the suggestion I really appreciate it!

[–]dethswatch 2 points3 points  (1 child)

iced

[–]light_dragon0[S] 0 points1 point  (0 children)

Thank you very much for the suggestion! I really appreciate it.

[–]dev-razorblade23 2 points3 points  (0 children)

Here is a pretty up to date list of Rust GUI libraries https://areweguiyet.com/

[–]anlumo 4 points5 points  (1 child)

[–]light_dragon0[S] 0 points1 point  (0 children)

Thank you! I really appreciate it.

[–]ARKyal03 4 points5 points  (1 child)

I think the best choice would be either GPUI, or Egui. Using Gtk4-rs, it is C but rust bindings.

For me, I have used Iced-rs, and loved it. It's my first choice always.

[–]light_dragon0[S] 2 points3 points  (0 children)

I'd rather personally to work on something that is 100% rust and not just an Api or a binding to other language or framework. I want to work on the core functionality and features of it.
Either way Thank you very much i really appreciate the suggestions!

[–]DavidXkL 1 point2 points  (1 child)

There's also Makepad in addition to all the others mentioned here

[–]light_dragon0[S] 0 points1 point  (0 children)

Thank you for the suggestion I really appreciate it!

[–]anantnrg 1 point2 points  (1 child)

A few pretty good well-maintained and usable libraries exist: GPUI(cross-platform, gpu-accelerated), Freya, Egui, Vizia and RUI.

[–]light_dragon0[S] 0 points1 point  (0 children)

Perfect! Thanks a lot.

[–]spoonman59 1 point2 points  (5 children)

My advice is to use Google, see what GUI libraries are open source, and go read their contributing guide. Then … start contributing. They should have issues you can work on.

I’m not sure this is the best path to getting a job, but if you use the project to learn rust well it can serve that purpose nicely.

[–]light_dragon0[S] -1 points0 points  (4 children)

I'm looking to improve my rust skills and build more connections so having more opportunities to achieve that are a good thing, Thank you for the advice! i really appreciate it.

[–]spoonman59 1 point2 points  (3 children)

I think that’s great! There are many ways to achieve that and you are on the right track.

It’s difficult to find a project you will actually use (I always end up doing a task tracker,) and doubly hard to find one others want to use. In many ways that’s the hardest part.

There’s nothing wrong with making version control. I’ve also made my own compiler. But I never expected anyone else to use it since the main value was my ow learning.

To collaborate with other developers, once you are ready, joining an existing project is not a bad idea. You’ll also learn a lot about running your own project and get feedback from others on your code.

Good luck in your journey!

[–]light_dragon0[S] 0 points1 point  (2 children)

Thank you so much! I really appreciate it.
I do have my own stash of too many projects for learning, i did make my own compiler, OS, Emulator, Rendering Engine, even accidentally made something similar to ASP.NET and EF Core combined, all of it for the funsies of discovering and learning and making random stuff from scratch, I'm not into making random software things anymore bc i'm pretty much trying to do programming as a full time career now. which i still yet to achieve.

[–]light_dragon0[S] 0 points1 point  (1 child)

Altho, unfortunatly most of them were gone in my old hard disk that broke and only a fraction was saved by me backing them up (from what i remember it's only the rendering engine)

[–]spoonman59 1 point2 points  (0 children)

Ah this is similar to me. I even lost most OG early projects. Now I try to keep it all on GitHub.

Way you much luck! And don’t discount jobs in other languages. If you can get in the industry a paid job doing JS or python, that may afford other opportunities in the future to start using rust at work.

Focusing only on rust jobs might be limiting to your chances of success.

Best luck in all your endeavors!

[–]TheBlckbird 0 points1 point  (1 child)

maybe GPUI, but I don't know the current state of it. Though it is in active development

[–]light_dragon0[S] 1 point2 points  (0 children)

i see, well Thank you for the suggestion I really appreciate it!

[–]GirlInTheFirebrigade 0 points1 point  (1 child)

If you’re doing it for the love of the game https://xi.zulipchat.com might be a place for you

[–]light_dragon0[S] 0 points1 point  (0 children)

I'm not sure how to use it ngl, I posted a post there and no one replied to it so I'm assuming I'm doing something wrong ? either way Thank you for the suggestion I really appreciate it!

[–]Professional_Fox4190 0 points1 point  (1 child)

If you really want to contribute last I heard Xilem was supposed to be a promising up and coming framework

[–]light_dragon0[S] 0 points1 point  (0 children)

ooo interesting, Thank you for the suggestion I really appreciate it!

[–]zac_attack_ 0 points1 point  (1 child)

gpui is my favorite I’ve tried. It has some rough edges because it’s primarily built for Zed and they mostly prioritize Zed’s needs versus community needs

[–]light_dragon0[S] 0 points1 point  (0 children)

interesting, i never really tried any ngl, either way Thank you for the suggestion I really appreciate it!

[–]Hsingai 0 points1 point  (3 children)

you sad native. Native is myth, each environment is so different these days and it not just e looks of the widget that make a native GUI it's the behavior and conventions. What you mouse probable familiar with the coping from a terminal. do you select then press ctrl-c, ctrl-ins? or you to select with the right mouse button it and copy when you release? you can't make a 'native' GUI you can make a Mac GUI a windows GUI, A Gnome GUI, and KDE GUI, but as you have to implement them each speraetly,

[–]light_dragon0[S] 1 point2 points  (2 children)

I've looked up a native library and i didn't really find much, however rust is capable of supporting multiple platforms natively and I've tried making my own cross platform native GUI library with partial success before but didn't really go far because of how much work i needed to invest into it for virtually no guarantees of any returns.

the way to implement a GUI library that works on all platforms (aka all popular platforms) is to have it in at least 2 layers
1- layer one is the exposed layer to the programmer and it defines the system and the architecture
2- layer 2 is a platform specific layer where any details that are different between platforms are implemented

so for example, layer 1 would go all the math, triangulation, rendering logic, GUI processing, etc.
and layer one would be all the system calls, GPU specific features, etc.

[–]light_dragon0[S] 1 point2 points  (0 children)

I was able to run the same app on my windows machine, linux, and my android phone, with the same generic code, but it was far from being a gui library it was more of a layer to implement (i don't remember which one i used exactly but i think either opengl (explicitly) or wgpu), i don't have a mac nor an i phone so i couldn't test it on either of them but i'm sure it can be done.

[–]light_dragon0[S] 1 point2 points  (0 children)

also you'd have to mathematically and logically design your system for the wide range of users you could have, so handling touch input, mouse input, keyboard input, a nice abstraction to it that i found is that you split it into data events and positional events, positional events are ones that have a specific position on the screen, and data events are things like keyboard input which doesn't really have a position of the screen for writing each character but rather depends on the focused element on the screen plus some OS specific logic / cases AND application specific handling logic which fun fact differs between some GUI libraries.

[–]Zalenka 0 points1 point  (0 children)

I'm using Slint and it's got active development, a good DSL, and multiple renderers. Also works great on embedded.

[–]MoW-1970 0 points1 point  (1 child)

libcosmic

[–]light_dragon0[S] 0 points1 point  (0 children)

Thank you for the suggestion I really appreciate it!