async_ui
Avalonia
async_ui | Avalonia | |
---|---|---|
7 | 255 | |
549 | 23,824 | |
- | 1.6% | |
8.4 | 9.9 | |
2 months ago | 5 days ago | |
Rust | C# | |
Mozilla Public License 2.0 | MIT License |
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.
async_ui
-
A Proposal for an asynchronous Rust GUI framework
I'm very interested in seeing if using the commonly implemented forms of compiler support for async programming can also be well used for GUI programming. One wishawa[0] is also perusing this approach in Rust but I first came upon this idea from the crank-js[1] authors. It wasn't clear to me why that one never went anywhere. Was it failure with the approach or was React just a good solution in the space? I can say this though, there's something strikingly elegant about those initial samples of using JavaScript generators for components.
[0]: https://github.com/wishawa/async_ui
[1]: https://github.com/bikeshaving/crank
Not OP, but... I'd argue that async style event handling is even more readable then the traditional way of using callbacks. Take a look at this counter example in Async UI (a project I've been working on that's very similar to what OP purposes); my event handlers are all in the same place, and my state (the value variable) is a regular variable; no reactivity primitive needed.
-
What is the "idiomatic" approach to events/callbacks?
If you are doing ui events, then you can have a look at wishawa/async_ui.
-
Show HN: Async UI: A Rust UI Library Where Everything Is a Future
Only in small examples. This doesn't look that much like SwiftUI to me: https://github.com/wishawa/async_ui/blob/main/examples/web-t...
- Async UI: a Rust UI Library where Everything is a Future
Avalonia
-
The search for easier safe systems programming
WPF is not the best example of open source, as some components are still closed source. Though it only runs on Windows, a closed source operating system, so perhaps that is not so important.
https://github.com/dotnet/wpf/issues/2554
That said, there are cross platform, open source .NET UI frameworks out there, including one that is inspired by WPF:
https://avaloniaui.net/
-
Industrial Controller? Windows or Linux?
You might also want to look at AvaloniaUI[0] for a cross platform .NET GUI library. It is similar to WPF but much nicer to work with.
[0] https://github.com/AvaloniaUI/Avalonia
- Avalonia – Farewell to the .NET Foundation
-
AvaloniaUI: Create Multi-Platform Apps with .NET
Production user here. There's no money gotchas. They're above reproach. In fact, I've received considerable free support from their devs on GitHub Issues [1].
The Avalonia business model is based on selling XPF, which runs WPF (Windows-only) apps on other platforms. That's very interesting to big corps with existing codebases.
See my comment [2]
[1] https://github.com/AvaloniaUI/Avalonia/issues
[2] https://news.ycombinator.com/item?id=39246988#39249128
-
.NET on Linux: What a Contrast
Yes, but the portable GUI frameworks by Microsoft themselves are generally not very good, and they tend to be abandoned after a couple of years.
Avalonia is developed outside of the Microsoft corporate madness and seems to be slowly becoming the defacto cross-platform framework because it is expected to last a bit longer than a manager's attention span: https://avaloniaui.net/
- Too many Mac apps are being built with Electron
-
Ask HN: Do you have a problem you'd pay to have taken away?
Not my comment, but relevant here "The problem with compiling Skia to WASM is you'll lose any benefits of hardware graphics acceleration on the device."
(From https://github.com/AvaloniaUI/Avalonia/discussions/6831#disc... )
- Dezvoltare aplicatie desktop
- Ask HN: How to create web, mobile, and desktop apps from a single code base?
-
.NET 8 – .NET Blog
It's a bit of a hit and miss as of today. CLI, back-end and natively compiled libraries (think dll/so/dylib or even .lib/.a - you can statically link NAOT binaries into other "unmanaged" code) work best, GUI - requires more work.
Avalonia[0] and MAUI[1] have known working templates with it, but YMMV.
[0] https://github.com/lixinyang123/AvaloniaAOT / https://github.com/AvaloniaUI/Avalonia/ / honorable mention https://github.com/VincentH-Net/CSharpForMarkup
[1] https://github.com/dotnet/maui (try out with just true in csproj - it is known to work e.g. on iOS)
What are some alternatives?
Caliburn.Micro - A small, yet powerful framework, designed for building applications across all XAML platforms. Its strong support for MV* patterns will enable you to build your solution quickly, without the need to sacrifice code quality or testability.
Uno Platform - Build Mobile, Desktop and WebAssembly apps with C# and XAML. Today. Open source and professionally supported.
molecule - Build a StateFlow stream using Jetpack Compose
Introducing .NET Multi-platform App UI (MAUI) - .NET MAUI is the .NET Multi-platform App UI, a framework for building native device applications spanning mobile, tablet, and desktop.
crank - The Just JavaScript Framework
WPF - WPF is a .NET Core UI framework for building Windows desktop applications.
MoonZoon - Rust Fullstack Framework
Eto.Forms - Cross platform GUI framework for desktop and mobile applications in .NET
composePPT - An experimental UI toolkit for generating PowerPoint presentation files using Compose
MahApps.Metro - A framework that allows developers to cobble together a better UI for their own WPF applications with minimal effort.
sqlx - 🧰 The Rust SQL Toolkit. An async, pure Rust SQL crate featuring compile-time checked queries without a DSL. Supports PostgreSQL, MySQL, and SQLite.
Gtk# - Gtk# is a Mono/.NET binding to the cross platform Gtk+ GUI toolkit and the foundation of most GUI apps built with Mono