GUI development with Rust and GTK 4

This page summarizes the projects mentioned and recommended in the original post on news.ycombinator.com

Our great sponsors
  • SonarLint - Clean code begins in your IDE with SonarLint
  • Mergify - Updating dependencies is time-consuming.
  • InfluxDB - Collect and Analyze Billions of Data Points in Real Time
  • Relm4

    Build truly native applications with ease!

    What about relm4? Is it generally feature complete? Can one use relm4 for most things, and drop to gtk4 for the oddball task that is not supported?

    https://relm4.org/

  • rust-summaries

    Rust summaries are short introductions to Rust programming topics, including the language, ecosystem, concepts, crates, and more.

    Rust GTK4 "hello world" app demonstrating the builder pattern:

    https://github.com/SixArm/rust-guideposts/blob/main/projects...

  • SonarLint

    Clean code begins in your IDE with SonarLint. Up your coding game and discover issues early. SonarLint is a free plugin that helps you find & fix bugs and security issues from the moment you start writing code. Install from your favorite IDE marketplace today.

  • xilem

    An experimental Rust native UI framework

  • floem

    A native Rust UI library with fine-grained reactivity

  • vizia

    A declarative GUI library written in Rust

  • freya

    Native GUI library for 🦀 Rust powered by 🧬 Dioxus and 🎨 Skia.

  • QMetaObject crate for Rust

    Integrate Qml and Rust by building the QMetaObject at compile time.

  • Mergify

    Updating dependencies is time-consuming.. Solutions like Dependabot or Renovate update but don't merge dependencies. You need to do it manually while it could be fully automated! Add a Merge Queue to your workflow and stop caring about PR management & merging. Try Mergify for free.

  • cxx-qt

    Safe interop between Rust and Qt

  • Avalonia.FuncUI

    Develop cross-plattform GUI Applications using F# and Avalonia!

    The code to declare/build the widgets is quite nice. Modifying widgets by hand on certain signals or manually re-wiring all the signals seems a bit outdated to me.

    Wonder if something like FuncUI [1] could be built on top of it.

    [1] https://github.com/fsprojects/Avalonia.FuncUI

  • brassica

    A featureful sound change applier for language construction

    No experience with Rust, but for a couple of personal projects I’ve written the logic in Haskell and the GUI in C++ (e.g. https://github.com/bradrn/brassica/blob/master/ARCHITECTURE....). It works pretty well, at least for smaller projects — the basic idea is that the Haskell code gets compiled into a library (static on Windows, dynamic on Linux) which the C++ side can link to. I’d imagine doing the same with Rust would be even easier, since it’s less of a pain to marshal stuff across the language barrier.

  • sdk-dotnet

    Temporal .NET SDK

    Having integrated C# and Rust recently[0], I have found that unlike Node w/ neon and Python w/ PyO3 + PyO3 Asyncio, there is no good Rust integration with .NET. Interopterus, rnet, etc leave a good bit to be desired.

    I ended up writing all the unsafe bindings myself and used cbindgen on the Rust side to make a header and ClangSharpPInvokeGenerator to generate the C# binding. But you still have to manually handle ownership/freeing yourself, e.g. with SafeHandle.

    0 - https://github.com/temporalio/sdk-dotnet, specifically https://github.com/temporalio/sdk-dotnet/tree/main/src/Tempo...

    0 -

  • gtk-kn

    Since you mentioned Kotlin, you might be interest in the recent gtk-kn effort which provides OOP bindings to GTK in Kotlin Native. (Early preview, not production ready at all)

    https://gitlab.com/gtk-kn/gtk-kn

  • gvsbuild

    GTK stack for Windows

    It's a hidden gem, but gvsbuild [1] has made it easier again these days - I just discovered it ~a year ago and it's beautiful :)

    [1] https://github.com/wingtk/gvsbuild

  • gtk4-rs

    Rust bindings of GTK 4

  • InfluxDB

    Collect and Analyze Billions of Data Points in Real Time. Manage all types of time series data in a single, purpose-built database. Run at any scale in any environment in the cloud, on-premises, or at the edge.

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts