aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--_posts/2021-10-24-2021-survey-of-rust-gui-libraries.md48
1 files changed, 24 insertions, 24 deletions
diff --git a/_posts/2021-10-24-2021-survey-of-rust-gui-libraries.md b/_posts/2021-10-24-2021-survey-of-rust-gui-libraries.md
index 389ba22..2e39ade 100644
--- a/_posts/2021-10-24-2021-survey-of-rust-gui-libraries.md
+++ b/_posts/2021-10-24-2021-survey-of-rust-gui-libraries.md
@@ -50,12 +50,12 @@ The short version, if you're in a hurry:
|[vgtk](#vgtk) |❌ | | |
|[WebRender](#webrender) |❌ | | |
-## Azul
+## [Azul](https://azul.rs/)
The [installation guide](https://azul.rs/guide/1.0.0-alpha1/Installation) says you need to separately download the precompiled library and make sure it's in the right folder and ughhhh that's more setup than adding it to `Cargo.toml` and i literally put in my rules that that's more work than i want to do.
Rust already has a build system, I don't want to have to fuck with things independently of that.
-## Conrod
+## [Conrod](https://github.com/pistondevelopers/conrod)
My previous adventures in Rust GUI development have led me to Conrod several times, and most of those times it's been a hassle, but we'll see if things have changed since then.
The [hello world tutorial](https://docs.rs/conrod_core/0.75.0/conrod_core/guide/chapter_3/index.html) appears to actually say which backends to use, which is a welcome and sorely-needed improvement.
@@ -82,14 +82,14 @@ So the officially-recommended backends don't exist anymore, or at least they no
I don't want to debug the official tutorial that's linked in the README.
As such, Conrod appears to not be for me.
-## core-foundation
+## [core-foundation](https://github.com/servo/core-foundation-rs)
"Bindings to Core Foundation for macOS" are cool if I'm using macOS.
As established, I'm not.
-## druid
+## [druid](https://linebender.org/druid/)
-Previously, [druid](https://linebender.org/druid/) was one of the two libraries I was most impressed by; let's see if that still holds.
+Previously, druid was one of the two libraries I was most impressed by; let's see if that still holds.
The "this is outdated, and should be replaced with a walkthrough of getting a simple app built and running" message in [the official guide](https://linebender.org/druid/get_started.html) persists, and upon further inspection there's been one release since my last blog post, with few new features.
The "hello world" code in the guide has broken - something that used to take a value now takes a closure returning that value - but that's an easy fix.
@@ -98,7 +98,7 @@ A harder fix, though, is that in the official "hello world" example, Windows Nar
In my last post, I treated accessibility as an afterthought, to the point where I had to go in several months later and retroactively check for and add information about screen reader support; this was the wrong decision for me, and it's the wrong decision for druid.
They list "Offer robust accessibility support" under their goals; maybe one day they'll get there.
-## egui
+## [egui](https://github.com/emilk/egui)
This is the first entry on Are We GUI Yet that wasn't there last year, and it was seeing something about this on Twitter that got me interested in revisiting this topic in the first place.
There's an official template that comes with some (bash, and thereby more-painful-on-Windows, but what can you do) scripts for managing WASM builds, but I'm not interested in WASM at this point, so I'll just yoink the code and undo the multi-track drifting that allows WASM builds (which they [probably don't actually need to do because wasm-bindgen can just do the right thing on binary crates due to work that i did almost exactly two years ago now](https://github.com/rustwasm/wasm-bindgen/pull/1843), but whatever).
@@ -108,12 +108,12 @@ There is, however, [work-in-progress screen reading support](https://github.com/
Unfortunately, this appears not to do anything, at least for me with my current setup and near-zero knowledge of egui.
Hopefully this becomes more robust soon.
-## FLTK
+## [FLTK](https://github.com/fltk-rs/fltk-rs)
The presence of the `fltk-bundled` feature is very much appreciated.
Unfortunately, it doesn't make up for a lack of screen reader accessibility.
-## GTK
+## [GTK](https://gtk-rs.org/)
The GTK project appears to be putting a lot of effort towards providing good Rust bindings.
Unfortunately,
@@ -126,12 +126,12 @@ Full disclosure: I have tried several times to get GTK 3 or 4 working for develo
I have failed several times, and succeeded none.
I am disinclined to try and fail again.
-## Iced
+## [Iced](https://github.com/iced-rs/iced)
Iced was one of the two projects I was impressed by last time around.
Unfortunately, that was before I started caring about accessibility as much; the counter example, when ran as a native binary, gives no information to Narrator.
-## imgui
+## [imgui](https://github.com/imgui-rs/imgui-rs)
The README doesn't have a self-contained example, but there's a [hello world example](https://github.com/imgui-rs/imgui-rs/blob/v0.8.0/imgui-examples/examples/hello_world.rs) that looks pretty reasonable.
But that `mod support;` declaration looks like it's probably abstracting out some complexity, let me just—[oh god my eyes](https://github.com/imgui-rs/imgui-rs/blob/v0.8.0/imgui-examples/examples/support/mod.rs) that's a lot of boilerplate.
@@ -141,7 +141,7 @@ If not, why do all the examples have it?
As stated, I don't already have a graphics pipeline set up, so I think I am not the target audience for imgui.
-## iui
+## [iui](https://github.com/rust-native-ui/libui-rs)
This one's also a new addition compared to my previous writeup.
And I'll be damned, it actually works!
@@ -150,67 +150,67 @@ Didn't have to mess around with compilers, worked just fine with Narrator.
It's been three years since the last crates.io release, but I'm writing this in the same order you're reading it, so this is the first one I've seen that actually has any accessibility support whatsoever.
If more than a handful of other libraries can clear that not-very-high bar, I'll fill in a more robust comparison, but for now this is pretty damn good.
-## KAS
+## [KAS](https://github.com/kas-gui/kas)
Runs fine, doesn't give Narrator any info.
-## lvgl
+## [lvgl](https://github.com/rafaelcaricio/lvgl-rs)
Setting up `DEP_LV_CONFIG_PATH` is 1. more work than just adding it to `Cargo.toml` and 2. apparently some bullshit based on C header configuration??
-## native-windows-gui
+## [native-windows-gui](https://github.com/gabdube/native-windows-gui)
Unsurprisingly, this works like a charm on Windows.
No installation problems, no accessibility problems, no worries.
It does, of course, only work on Windows, though, and I would love to wind up with code that theoretically should be cross-platform.
-## OrbTk
+## [OrbTk](https://github.com/redox-os/orbtk)
Works, no accessibility.
-## qmetaobject-rs
+## [qmetaobject-rs](https://github.com/woboq/qmetaobject-rs)
```text
Error: Failed to execute qmake. Make sure 'qmake' is in your path!
```
-## qt_widgets
+## [qt_widgets](https://rust-qt.github.io/)
```text
failed to run command: "qmake" "-query" "QT_VERSION"
```
-## relm
+## [relm](https://github.com/antoyo/relm)
```text
LINK : fatal error LNK1181: cannot open input file 'gtk-3.lib'
```
-## rust-qt-binding-generator
+## [rust-qt-binding-generator](https://invent.kde.org/sdk/rust-qt-binding-generator)
installing Qt is more work than i want to have to do.
-## sciter-rs
+## [sciter-rs](https://github.com/sciter-sdk/rust-sciter)
downloading the SDK independent of Cargo is more work than i want to have to do.
-## SixtyFPS
+## [SixtyFPS](https://sixtyfps.io/)
works, no accessibility
-## Tauri
+## [Tauri](https://tauri.studio/en/)
[whatever the hell any of this is](https://tauri.studio/en/docs/usage/development/integration#1-start-a-new-tauri-project) is more work than i want to have to do.
it looks like this wants you to have both npm/yarn and Cargo?
and i don't think i like the implications of that.
-## vgtk
+## [vgtk](https://github.com/bodil/vgtk)
```text
Could not run `"pkg-config" "--libs" "--cflags" "glib-2.0" "glib-2.0 >= 2.44"`
```
-## WebRender
+## [WebRender](https://github.com/servo/webrender)
[what the goddamn hell is this supposed to be](https://github.com/servo/webrender/blob/master/examples/common/boilerplate.rs)?