Skip to content
HN On Hacker News ↗

Are we GUI yet?

▲ 200 points 153 comments by mahirsaid 5w ago HN discussion ↗

Pangram verdict · v3.3

We believe that this document is fully human-written

0 %

AI likelihood · overall

Human
100% human-written 0% AI-generated
SEGMENTS · HUMAN 4 of 4
SEGMENTS · AI 0 of 4
WORD COUNT 609
PEAK AI % 0% · §4
Analyzed
Jun 13
backend: pangram/v3.3
Segments scanned
4 windows
avg 152 words each
Distribution
100 / 0%
human / AI fraction
Verdict
Human
Pangram v3.3

Article text · 609 words · 4 segments analyzed

Human AI-generated
§1 Human · 0%

The roots aren't deep but the seeds are planted. As a low level language, Rust is perfectly suitable for making user interfaces the old fashioned way, with native APIs. However, competing in today's world typically means supporting many platforms, and that makes using native APIs an unattractive option for many. Rust's expressiveness and high level abstractions make it ideal for building intricate and complex user interfaces. Unfortunately, there is little consensus on what the best abstractions are. There are a number of bindings available today to existing frameworks, but those looking for a mature, easy to use, and completely Rust-based solution will most likely find themselves out of luck. Current approaches to building GUIs in Rust include interfacing with Electron and building GUIs with HTML (or a framework on top of it), while others have taken to using graphics APIs and various wrappers to emulate classical widgets. The cross platform parallel rendering engine Webrender, built for Servo and usable in Firefox Nightly, takes this latter approach and is multi-platform, but is more of a base for a GUI framework than one in itself.

Stay in the loop. Below are recent community links submitted to the site. If you're working on or writing about GUIs in Rust, please contribute! Each news entry can be a link back to your blog, Reddit thread, etc. See the README for details.

See more posts

Azul [crate · repo · docs] Azul GUI is a free, functional, reactive GUI framework for rapid development of desktop applications written in Rust and C, using the Mozilla WebRender rendering engine. blinc [crate · repo · docs] Blinc application framework with clean layout and rendering API.

§2 Human · 0%

cacao [crate · repo · docs] Rust bindings for AppKit (macOS/Airyx/GNUStep, beta) and UIKit (iOS/tvOS, alpha). core-foundation [crate · repo · docs] Bindings to Core Foundation for macOS. Crux [crate · repo · docs] Cross-platform app development in Rust. Cushy [crate · repo · docs] A wgpu-powered graphical user interface (GUI) library with a reactive data model. CXX-Qt [crate · repo · docs] CXX-Qt is a library that automatically generates code to transfer data between Rust and C++ through common interfaces such as QObjects that can be exposed directly into QML. It uses the cxx crate for safe interaction between Rust and C++.

§3 Human · 0%

Dioxus [crate · repo · docs] Elegant React-like library for building user interfaces for desktop, web, mobile, SSR, liveview, and more. Dominator [crate · repo · docs] Zero-cost ultra-high-performance declarative DOM library using FRP signals. egui [crate · repo · docs] An easy-to-use immediate mode GUI that runs on both web and native. Floem [crate · repo · docs] UI library aiming to be extremely performant while providing world-class developer ergonomics. From the team that made the Lapce code editor. fltk [crate · repo · docs] The FLTK crate is a crossplatform lightweight gui library which can be linked to statically to produce small, self-contained and fast binaries. flutter_rust_bridge [crate · repo · docs] Flutter/Dart <-> Rust binding generator, feature-rich, but seamless and simple.

§4 Human · 0%

Freya [crate · repo · docs] Cross-platform and non-web GUI Library powered by Skia. fui [crate · repo · docs] MVVM-oriented (properties, observable collections, bindings), ui! macro, multiplatform, renderer-agnostic, with styles. GPUI [crate · repo · docs] A hybrid immediate and retained mode, GPU accelerated, UI framework, designed to support a wide variety of applications. GTK 3 [crate · repo · docs] UNMAINTAINED Rust bindings for the GTK+ 3 library (use gtk4 instead). Iced [crate · repo · docs] A renderer-agnostic GUI library for Rust focused on simplicity and type-safety. Inspired by Elm. imgui [crate · repo · docs] High-level Rust bindings to dear imgui.