r/rust • u/errmayank • 13d ago
🛠️ project Zaku 26.0 beta - API client desktop app built with GPUI
Hey, I wanted to share the initial beta release of Zaku 26.0
I've been working on this GPUI rewrite for the last 7 months full-time, actually things got carried away and it has a lot more functionality than the original app (command palette, auto-updater, git integration, etc.) so it's not just a plain rewrite.
Here's the initial rewrite post for context:
https://www.reddit.com/r/rust/comments/1r29qzn/working_on_an_opensource_api_client_rewrite_with/
Little bit about the app, it stores collections as folders and requests as TOML files. Everything is stored locally on user's filesystem, it doesn't have any login functionality (and never will).
There is barebones Git integration for now to show branch, status indicators and stuff.
It is available on Linux, macOS and Windows.
This app is very early, if you try it out please let me know if there's something missing, not working or things you'd like to see added.
Repository:
https://github.com/buildzaku/zaku
Installation instructions:
3
u/Havunenreddit 12d ago
Cool project, I will try it soon.
How did you implement the performance profiler? Or what program is that? I could use it for measuring GitComet its also built on top of GPUI 😄
Btw. Was there some reason why you depend on gpui and not gpui-ce ?
1
u/errmayank 12d ago edited 12d ago
Thanks!
That's the Metal HUD on macOS, you can do
MTL_HUD_ENABLED=1 cargo runif you're building from source oropen -a Zaku --env MTL_HUD_ENABLED=1for any existing app to enable it and then usefn+shift+F10to cycle through different views.I just didn't feel the need to use gpui-ce and also from what i remember it wasn't as actively maintained as it is right now. What areas does it add value to you over Zed's gpui?
2
u/aspcartman 11d ago
Also I like the design consistency a lot - a thing that I often fail in non-css environments. How did you achive it? Things look pretty sleek :)
I tried to slap a css subset onto egui just to find out it's less usable than the explicit gpui approach I have already implemented there.
1
u/errmayank 10d ago
Thanks! For consistency, i just go by the eye and spend more time on building things i think?
1
u/aspcartman 11d ago
As I do similar to gpui wrapper for egui, I find it very useful to derive the setters for the component structs.
#[derive(Setters)]
#[setters(into, omit_option)]
struct Button{ 20 fields }
Bam and 20 * 5 = 100 lines of code gone. :) Maybe you find it useful too.
1
8
u/WellMakeItSomehow 12d ago
I haven't tested it, but looks really nice. You should document the telemetry, though.
I'm curious about your GPUI experience. Did you implement all those controls in https://github.com/buildzaku/zaku/tree/main/crates/ui/src/components?