Skip to content

MadLadSquad/UntitledImGuiFramework

Repository files navigation

UntitledImGuiFramework

CI MIT license trello Discord

A desktop software development framework that uses Dear imgui as its UI and Rendering library.

Motivation

Desktop UI frameworks and libraries like QT and GTK are complicated and really rigid. Using them or system-specific UI libraries would hard-lock us into using only what they use.

We also wanted a small and light core, which provides most-minimal features. We also wanted good developer experience, as QT and GTK seemed overengineered to us. Dear imgui filled all our requirements.

Dear imgui provides a GUI layer which provides the following benefits:

  • Light
  • Fast(graphically accelerated)
  • Immediate(rendering is done in the source code using function calls)
  • Doesn't require config files for layouts or style *
  • Easy to work with
  • Used by a multitude of high profile developers, an incomplete list can be seen here

* It depends on 1 for window management and compositing but it is small, autogenerated and is mainly used to save window coordinates for the next user session.

Library features

The library is divided into multiple modules compiled statically into your program. Users can fully decide which modules and submodules they want or don't want to include in their application. Module list and development status below:

  • Core Module ✅
    • Window ✅
    • Core ImGui rendering ✅
    • Textures ✅
    • Renderer submodules ✅
      • OpenGL ✅
      • Vulkan 🚧
  • I18N module ✅
    • Adds localization ✅
    • Adds utilities for accessing the user locale ✅
    • Adds additional utilify functions for localization ✅
  • Plotting Module ✅
    • Adds ImPlot for plotting ✅
  • Knobs Module ✅
  • Spinner Module ✅
    • Adds imspinner for different spinner widgets ✅
  • Toggles Module ✅
    • Adds imgui_toggle library for different types of toggle widgets ✅
  • Text Utils Module ✅
    • Adds the UntitledImGuiTextUtils library that adds additional utility functions for easily rendering bold, italic, underlined and other types of text
  • Undo/Redo Module ✅
    • Adds Undo/Redo operation support ✅
  • CLI Args module ✅
  • Theming module ✅
  • OS Module for core OS interaction

The framework uses C++ as its main development language. Additionally, because we want to include support for full modability and plugins in mutiple languages, the user-facing API has a separate, completely C version that can be used to develop applications too!

Simply write the required bindings to your language or generate them automatically from C using a relevant tool. As long as you have the main engine library compiled you should easily be able to write applications in C or any other programming language that supports C style functions. C and C++ ABI stability of the core is generally guaranteed.

Learn

You can find the documentation in the wiki.

Documentation is written as pure learning material, code examples are, in most cases, provided and are written with both the C and C++ API in mind. Additionally, there is specific documentation for distibuting applications including the framework on different platforms that may be used by OS maintainers to create packages for the framework.

Showcase and Progress

Coming soon, follow our YouTube channel and the UntitledDesktopEnvironment wiki for updates and some feature highlights soon!

There are many applications, already in production, that use the framework. A list can be found here. If your application uses the framework, please contribute to the list!

The organization trello board can be found here. It contains organization information on all projects related to UDE. The framework can be found in its corresponding cards.