Native clients for desktop platforms

(#1068) Feature Declined desktop performance

Thread

Comment by @Speykious
RexSystem 1 vote originally by @Speykious on GitHub 4 replies
I intend to make my own native desktop client for Fluxer using my own GUI framework with my own simple OpenGL renderer, all written in Rust. It's immediate-mode, cross-platform, has hot-reloading (thanks tosubsecond), supports stuff like unicode text (thanks to parley), text input and animations, and has a widget inspector. I still need to add some important things like a Metal renderer for MacOS (the OpenGL renderer is too slow on MacOS right now), some kind of way to make custom shaders (won't take too long) and accessibility (using accesskit), but apart from that it's pretty much usable. Here's a demo of what I have so far. https://fs.speykious.dev/showcases/uing/uing-demo-6e72fb7.mp4 Here's a smaller video demonstrating hot reloading since GitHub doesn't want to embed the previous video. 557966331-f897c6f9-6e17-40d5-9bc8-f37e503cd469.mp4
557966331-f897c6f9-6e17-40d5-9bc8-f37e503cd469.mp4 | 4.9 MB
Comment by @yofukashino
RexSystem 1 vote originally by @yofukashino on GitHub
This is the correct way of approaching this. iirc vulkun is more lightweight tho? Edit: Nice Roxy wallpaper
Comment by @Speykious
RexSystem 1 vote originally by @Speykious on GitHub
I'm not sure about "more lightweight", but it's definitely more modern than OpenGL (which has stopped receiving updates 8 years ago) and gives you a lot more fine-grained control. Problem is, I'd need to learn it, and that's gonna take a while... So I'm doing Metal first :p
And no, I don't want to use WGPU. It's way too much abstraction, and from my point of view it's yet another API to learn. I'd rather learn Metal and have something solid on all platforms, then add Vulkan after that. I can have a lot more freedom with my renderer by making this myself, and it's fine because I already have something that works.
Reply on the edit: Thank you :3 Edit: another possibility would be to use Core Animation, which was a friend's suggestion. Though it would require me to make a second renderer rather than add a backend to my existing renderer. I guess I'll look into it.
Comment by @yofukashino
RexSystem 1 vote originally by @yofukashino on GitHub
I'm not sure about "more lightweight", but it's definitely more modern than OpenGL (which has stopped receiving updates 8 years ago) and gives you a lot more fine-grained control. Problem is, I'd need to learn it, and that's gonna take a while... So I'm doing Metal first :p
That is quite reasonable, I mean its still better than electron.
Comment by @TheKodeToad
RexSystem 1 vote originally by @TheKodeToad on GitHub
I too intend to create a client in Rust (and have already started) but with gpui-component! I don't want to stop because it's fun! Maybe I should switch to something more native so there aren't two attempts to do something very similar... maybe if I get something working quickly (which should be easier when I don't need to work on my own ui stuff too much) it could also help other efforts (also note that I'm new to Rust and its ecosystem, Speykious probably stands a better chance of making something good) (I am also on Plasma and Qt would be the native look - and using Qt from Rust isn't that fun so C++ is probably a better bet) Edit: I'll just wait and see what everyone else does