A desktop software development framework that uses Dear imgui as its UI and Rendering library.
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.
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 ✅
- Adds imgui-knobs for knob widgets ✅
- 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 ✅
- Adds a parser for CLI arguments using the UntitledCLIParser
- Theming module ✅
- Adds the UntitledImGuiTheme library for reading and writing themes ✅
- OS Module for core OS interaction
- URL and file/folder opener with default application using the UntitledOpen library ✅
- Exec integration using the UntitledExec library ✅
- Cross-platform system font querying using the UntitledFontUtils library ✅
- Unix: ✅
- XDG Basedir integration ✅
- dbus integration ✅
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.
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.
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.