Immediate Mode GUI Programming

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

InfluxDB – Built for High-Performance Time Series Workloads
InfluxDB 3 OSS is now GA. Transform, enrich, and act on time series data directly in the database. Automate critical tasks and eliminate the need to move data externally. Download now.
www.influxdata.com
featured
SaaSHub - Software Alternatives and Reviews
SaaSHub helps you find the best software and product alternatives
www.saashub.com
featured
  1. imgui

    Dear ImGui: Bloat-free Graphical User interface for C++ with minimal dependencies

    The Dear ImGui readme is a good starting point:

    https://github.com/ocornut/imgui

    ...now of course Dear ImGui is a specific implementation of an immediate mode UI framework, but it's also the most popular implementation.

  2. InfluxDB

    InfluxDB – Built for High-Performance Time Series Workloads. InfluxDB 3 OSS is now GA. Transform, enrich, and act on time series data directly in the database. Automate critical tasks and eliminate the need to move data externally. Download now.

    InfluxDB logo
  3. egui

    egui: an easy-to-use immediate mode GUI in Rust that runs on both web and native

    I cannot recommend immediate mode GUI programming based on the limitations I've experienced working with egui.

    egui does not support putting two widgets in the center of the screen: https://github.com/emilk/egui/issues/3211

    It's really easy to get started with immediate mode, it's really easy to bust out some UI, but the second you start trying to involve dynamically resized context and responsive layouts -- abandon all hope. The fact it has to calculate everything in a single pass makes these things hard/impossible.

    ... that said, I'm still using it for https://ant.care/ (https://github.com/MeoMix/symbiants) because it's the best thing I've found. I'm crossing my fingers that Bevy's UI story (or Kayak https://github.com/StarArawn/kayak_ui) become significantly more fleshed out sooner rather than later. Bevy 0.13 should have lots more in this area though (https://github.com/bevyengine/bevy/discussions/9538)

  4. symbiants

    Ant Colony Sim + Daily Mental Health Exercises

    I cannot recommend immediate mode GUI programming based on the limitations I've experienced working with egui.

    egui does not support putting two widgets in the center of the screen: https://github.com/emilk/egui/issues/3211

    It's really easy to get started with immediate mode, it's really easy to bust out some UI, but the second you start trying to involve dynamically resized context and responsive layouts -- abandon all hope. The fact it has to calculate everything in a single pass makes these things hard/impossible.

    ... that said, I'm still using it for https://ant.care/ (https://github.com/MeoMix/symbiants) because it's the best thing I've found. I'm crossing my fingers that Bevy's UI story (or Kayak https://github.com/StarArawn/kayak_ui) become significantly more fleshed out sooner rather than later. Bevy 0.13 should have lots more in this area though (https://github.com/bevyengine/bevy/discussions/9538)

  5. microui

    A tiny immediate-mode UI library

    There is also microui, which I like[0].

    Which I forked to work with SDL2[1], no guarantees. It's fun to hack on.

    [0]https://github.com/rxi/microui

    [1]https://github.com/kennethrapp/microui

  6. microui

    A tiny immediate-mode UI library (by kennethrapp)

    There is also microui, which I like[0].

    Which I forked to work with SDL2[1], no guarantees. It's fun to hack on.

    [0]https://github.com/rxi/microui

    [1]https://github.com/kennethrapp/microui

  7. kayak_ui

    I cannot recommend immediate mode GUI programming based on the limitations I've experienced working with egui.

    egui does not support putting two widgets in the center of the screen: https://github.com/emilk/egui/issues/3211

    It's really easy to get started with immediate mode, it's really easy to bust out some UI, but the second you start trying to involve dynamically resized context and responsive layouts -- abandon all hope. The fact it has to calculate everything in a single pass makes these things hard/impossible.

    ... that said, I'm still using it for https://ant.care/ (https://github.com/MeoMix/symbiants) because it's the best thing I've found. I'm crossing my fingers that Bevy's UI story (or Kayak https://github.com/StarArawn/kayak_ui) become significantly more fleshed out sooner rather than later. Bevy 0.13 should have lots more in this area though (https://github.com/bevyengine/bevy/discussions/9538)

  8. bevy

    A refreshingly simple data-driven game engine built in Rust

    I cannot recommend immediate mode GUI programming based on the limitations I've experienced working with egui.

    egui does not support putting two widgets in the center of the screen: https://github.com/emilk/egui/issues/3211

    It's really easy to get started with immediate mode, it's really easy to bust out some UI, but the second you start trying to involve dynamically resized context and responsive layouts -- abandon all hope. The fact it has to calculate everything in a single pass makes these things hard/impossible.

    ... that said, I'm still using it for https://ant.care/ (https://github.com/MeoMix/symbiants) because it's the best thing I've found. I'm crossing my fingers that Bevy's UI story (or Kayak https://github.com/StarArawn/kayak_ui) become significantly more fleshed out sooner rather than later. Bevy 0.13 should have lots more in this area though (https://github.com/bevyengine/bevy/discussions/9538)

  9. SaaSHub

    SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives

    SaaSHub logo
  10. slint

    Slint is an open-source declarative GUI toolkit to build native user interfaces for Rust, C++, JavaScript, or Python apps.

    I haven't. I was just searching for a GUI library that was Bevy-compatible and slint isn't at the moment: https://github.com/slint-ui/slint/discussions/940

    Sorry!

  11. sciter

    Sciter: the Embeddable HTML/CSS/JS engine for modern UI development

    otherwise, if we have only retained mode as in browsers, we will need to modify the DOM heavily and create temporary elements for handles.

    [1] https://sciter.com

  12. tracy

    Frame profiler

    The RemedyBG debugger (https://remedybg.handmade.network/) and the Tracy profiler (https://github.com/wolfpld/tracy) both use Dear ImGui and so far I've only read high praise from people who used those tools compared to the 'established' alternatives.

    For tools like this, programmers are also just "normal users", and from the developer side, I'm sure they evaluated various alternatives with all their pros and cons before settling for Dear ImGui.

  13. hello_egui

    A collection of useful crates for egui

    https://lucasmerlin.github.io/hello_egui/

    I've had to spend a lot of time improving egui and it's ecosystem in the process of building my app but it seems to be worth it.

    If you're not building a graphical app it probably makes more sense to use something like tauri or flutter as the gui to build a cross platform app with rust, at least until it's gui ecosystem matures.

  14. ImHex

    🔍 A Hex Editor for Reverse Engineers, Programmers and people who value their retinas when working at 3 AM.

    I didn't use RemedyBG or Tracy, but I did try ImHex (https://github.com/WerWolv/ImHex) and it loaded 12% of the CPU because everything is being repainted 60 times per second. Heck, it even has an option to limit the FPS, which solves the CPU load a bit, but at the same time results in sluggish input because the event handling is tied to the drawing frequency.

    So yes, the experience was not good, and I don't see what these tools would lose by using a proper GUI. I don't want every utility to drain my laptop battery like a decent video game.

    ImGui is great if you already have a loop where everything is unconditionally redrawn every frame, but otherwise it's a really odd choice for an end-user application.

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

  • Egui 0.29.0 – Multipass, `UiBuilder`, & visual improvements

    1 project | news.ycombinator.com | 26 Sep 2024
  • Egui: An easy-to-use GUI in pure Rust

    1 project | news.ycombinator.com | 24 Sep 2024
  • Building cross-platform GUI apps in Rust using egui

    4 projects | dev.to | 27 Aug 2024
  • Egui 0.28 – easy-to-use immediate mode GUI for Rust

    1 project | news.ycombinator.com | 3 Jul 2024
  • Macroquad egui DevTools: Rust Game Debugging UI

    3 projects | dev.to | 2 May 2024

Did you know that Rust is
the 5th most popular programming language
based on number of references?