owlkettle
rui
Our great sponsors
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
owlkettle
-
Writing Gnome Apps with Swift
This is really cool! I love the JSX-like approach to UI and it's a shame it's not so common on desktop. https://github.com/can-lehmann/owlkettle is the only thing I find comparable.
- Owlkettle – declarative GUI framework for Nim
-
Nim v2.0 Released
Ones that have not been mentioned so far:
nlvm is an unofficial LLVM backend: https://github.com/arnetheduck/nlvm
npeg lets you write PEGs inline in almost normal PEG notation: https://github.com/zevv/npeg
futhark provides for much more automatic C interop: https://github.com/PMunch/futhark
nimpy allows calling Python code from Nim and vice versa: https://github.com/yglukhov/nimpy
questionable provides a lot of syntax sugar surrounding Option/Result types: https://github.com/codex-storage/questionable
ratel is a framework for embedded programming: https://github.com/PMunch/ratel
cps allows arbitrary procedure rewriting to continuation passing style: https://github.com/nim-works/cps
chronos is an alternative async/await backend: https://github.com/status-im/nim-chronos
zero-functional fixes some inefficiencies when chaining list operations: https://github.com/zero-functional/zero-functional
owlkettle is a declarative macro-oriented library for GTK: https://github.com/can-lehmann/owlkettle
A longer list can be found at https://github.com/ringabout/awesome-nim.
-
Simple Gamepad Support
Although for a GUI (if I even made one, rather than just a fixed/hardcoded setup) I'd probably use Owlkettle(though there are some things I don't like about it, see closed issue 16).
-
Forte! A new way of writing Gtk apps for GNOME.
A similar library in nim is https://github.com/can-lehmann/owlkettle
-
How should one start a GUI library
There's also Owlkettle that seems a bit easier/cleaner IMO, though when I tried it I had some issues (clunky container workflow, wanting better scaling) and would prefer something similar using Qt.
- Show HN: Owlkettle – A Declarative user interface framework based on GTK 4
rui
- Considerations for Power Draw with egui
-
Floem - yet another new Rust native UI library
Inspired by Xilem, Leptos and rui, Floem aims to be a high performance declarative UI library with minimal effort from the user.
-
Leveraging Rust and the GPU to render user interfaces at 120 FPS
My rui library can render UIs at 120fps, uses similar SDF techniques (though uses a single shader for all rendering): https://github.com/audulus/rui
Is their GPUI library open source?
-
Tauri Mobile – Develop Mobile Apps with JavaScript and Rust
I think the jury is still out on whether rust is good or bad for UI. Once rust UI libraries are more mature we'll get a sense of it. There are some advantages of static typing, even for UI (see SwiftUI for example). I'll grant the pickiness of rust can be a challenge. Anyway give us some time to work on stuff.
Here's my effort: https://github.com/audulus/rui
-
Rust GUI framework
rui
-
Do you think is it worth to learn gtk4 to use it with rust?
Depending on the scale of your project, I could suggest rui library which is cross platform though it's not related to gtk, https://github.com/audulus/rui, It's inspired by swiftUI
- Show HN: Async UI: A Rust UI Library Where Everything Is a Future
-
Vector Graphics on GPU
I've done a library for vector graphics on the GPU which works pretty well for my uses:
https://github.com/audulus/vger
and a rust version:
https://github.com/audulus/vger-rs
(which powers my rust GUI library: https://github.com/audulus/rui)
Here's the approach for rendering path fills. From the readme:
> The bezier path fill case is somewhat original. To avoid having to solve quadratic equations (which has numerical issues), the fragment function uses a sort-of reverse Loop-Blinn. To determine if a point is inside or outside, vger tests against the lines formed between the endpoints of each bezier curve, flipping inside/outside for each intersection with a +x ray from the point. Then vger tests the point against the area between the bezier segment and the line, flipping inside/outside again if inside. This avoids the pre-computation of Loop-Blinn, and the AA issues of Kokojima.
It works pretty well, and doesn't require as much preprocessing as the code in the article. Also doesn't require any GPU compute (though I do use GPU compute for some things). I think ultimately the approach in the article (essentially Piet-metal, aka tessellating and binning into tiles) will deliver better performance, and support more primitives, but at greater implementation complexity. I've tried the Piet-metal approach myself and it's tricky! I like the simpler Shadertoy/SDF inspired approach :)
-
Is it conveninent to make cross-platform GUI softwares using Rust now?
You should look into rui, https://github.com/audulus/rui It is an amazing ui Library for rust
-
Is there a common library for guis used in rust?
Try rui https://github.com/audulus/rui, It's a Swift Type ui
What are some alternatives?
Relm4 - Build truly native applications with ease!
floem - A native Rust UI library with fine-grained reactivity
ImThemes - Dear ImGui style browser and editor written in Nim
dioxus - Fullstack GUI library for web, desktop, mobile, and more.
NiGui - Cross-platform desktop GUI toolkit written in Nim
slint - Slint is a declarative GUI toolkit to build native user interfaces for Rust, C++, or JavaScript apps.
nimgram - An MTProto client written in Nim 👑
Neothesia - Flashy Synthesia Like Software For Linux,Windows and MacOs
awesome-nim - A curated list of awesome Nim frameworks, libraries, software and resources.
tauri - Build smaller, faster, and more secure desktop applications with a web frontend.
pixie - Full-featured 2d graphics library for Nim.
7GUI - the 7 gui project