{"id":20278857,"url":"https://github.com/madladsquad/untitledimguiframework","last_synced_at":"2026-04-06T02:10:57.457Z","repository":{"id":44520576,"uuid":"482251851","full_name":"MadLadSquad/UntitledImGuiFramework","owner":"MadLadSquad","description":"An independent cross-platform desktop application development framework using dear imgui ","archived":false,"fork":false,"pushed_at":"2025-04-11T05:48:00.000Z","size":7086,"stargazers_count":36,"open_issues_count":5,"forks_count":5,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-04-11T06:14:19.086Z","etag":null,"topics":["application-framework","c","cpp","desktop-environment","gui","hacktoberfest","imgui","immediate-mode","linux","macos","opengl","vulkan","windows"],"latest_commit_sha":null,"homepage":"https://madladsquad.com/desktop","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/MadLadSquad.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":".github/CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-04-16T12:45:36.000Z","updated_at":"2025-04-11T05:46:57.000Z","dependencies_parsed_at":"2023-10-14T20:11:39.155Z","dependency_job_id":"35c6cc15-8b54-4526-9640-9b836a988597","html_url":"https://github.com/MadLadSquad/UntitledImGuiFramework","commit_stats":null,"previous_names":[],"tags_count":66,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MadLadSquad%2FUntitledImGuiFramework","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MadLadSquad%2FUntitledImGuiFramework/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MadLadSquad%2FUntitledImGuiFramework/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MadLadSquad%2FUntitledImGuiFramework/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MadLadSquad","download_url":"https://codeload.github.com/MadLadSquad/UntitledImGuiFramework/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248351393,"owners_count":21089272,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["application-framework","c","cpp","desktop-environment","gui","hacktoberfest","imgui","immediate-mode","linux","macos","opengl","vulkan","windows"],"created_at":"2024-11-14T13:26:47.776Z","updated_at":"2026-01-12T11:49:41.352Z","avatar_url":"https://github.com/MadLadSquad.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# UntitledImGuiFramework\n[![CI](https://github.com/MadLadSquad/UntitledImGuiFramework/actions/workflows/ci.yaml/badge.svg?branch=master)](https://github.com/MadLadSquad/UntitledImGuiFramework/actions/workflows/ci.yaml)\n[![MIT license](https://img.shields.io/badge/License-MIT-blue.svg)](https://lbesson.mit-license.org/)\n[![Discord](https://img.shields.io/discord/717037253292982315.svg?label=\u0026logo=discord\u0026logoColor=ffffff\u0026color=7389D8\u0026labelColor=6A7EC2)](https://discord.gg/4wgH8ZE)\n\n\u003cimg width=\"200px\" height=\"200px\" src=\"https://github.com/user-attachments/assets/ad33fc85-4f31-4f73-bf50-e0704a88d53e\"/\u003e\n\n*\u003csub\u003eLogo designed and created by \u003ca href=\"https://www.instagram.com/_.insekhta._/\"\u003einsekhta\u003c/a\u003e.\u003c/sub\u003e*\n\nAn independent cross-platform desktop application development framework that uses dear imgui as its UI and rendering library.\n\n## NEW: Interactive web demo\nYou can try out the demo [here](https://uimgui.madladsquad.com).\n\n## Motivation\nBuilding UI using a traditional GUI application framework is hard and tedious. One has to deal with different files and languages for building\nout the scaffold, layout, and logic. Most GUI application frameworks are also retained-mode, which introduces bugs with tracking state, especially\nwhen the application you're building is multithreaded.\n\nAnother motivating factor was our decision to create our own independent desktop environment for Freedesktop-based systems, that also has general compatibility\nwith other operating systems, such as Windows and macOS.\n\nFinally, we wanted to also be able to distribute the core to most popular consumer platforms.\n\nThe [dear imgui](https://github.com/ocornut/imgui) library filled all our requirements, so we decided to create a wrapper around it and all other boilerplate-ey components of creating a GUI application. \n\n[dear imgui](https://github.com/ocornut/imgui) provides a GUI layer which has the following benefits over other solutions:\n\n- Light\n- Fast(graphically accelerated)\n- Immediate(rendering is done in the source code using function calls)\n- Your styling, layout, scaffold and scripting is all in your source code\n- Easy to work with\n- Used by a multitude of high profile developers, an list can be found [on dear imgui's wiki](https://github.com/ocornut/imgui/wiki/Software-using-dear-imgui)\n\n## Framework features\nThe above section says a lot, but let's talk features.\n\n### Interfaces\nThe framework provides access to many core features through so-called interfaces. Currently we have the following interfaces:\n\n1. Window interface - covers almost all parts of Window management on most platforms and even has additional X11 features\n1. Input interface - an easy way to deal with input devices, key bindings and more\n1. Renderer interface - gives you access to renderer settings\n1. Utility interface - contains many utility functions\n1. Plugins interface - allows you to interact with the built-in plugin support\n\n### Modules\nThe framework is divided into multiple modules compiled statically into your program. Users can fully decide which modules \nand submodules they want or don't want to include in their application. Module list and development status below:\n\n- Core Module ✅\n  - Window ✅\n  - Core ImGui rendering ✅\n  - Textures ✅\n  - Renderer subsystems ✅\n    - OpenGL ✅\n    - Vulkan ✅\n    - WebGPU ✅\n    - Custom pluggable renderer ✅\n- I18N module ✅\n  - Adds the [UntitledI18N](https://github.com/MadLadSquad/UntitledI18N) library for internationalisation support\n- Plotting Module ✅\n  - Adds [ImPlot](https://github.com/epezent/implot) for plotting ✅\n- Knobs Module ✅\n  - Adds [imgui-knobs](https://github.com/altschuler/imgui-knobs) for knob widgets ✅\n- Spinner Module ✅\n  - Adds [imspinner](https://github.com/dalerank/imspinner) for different spinner widgets ✅\n- Toggles Module ✅\n  - Adds [imgui_toggle](https://github.com/cmdwtf/imgui_toggle) library for different types of toggle widgets ✅\n- Text Utils Module ✅\n  - Adds the [UntitledImGuiTextUtils](https://github.com/MadLadSquad/UntitledImGuiTextUtils) library that adds additional utility \nfunctions for easily rendering bold, italic, underlined and other types of text\n- Undo/Redo Module ✅\n  - Adds Undo/Redo operation support ✅\n- CLI Args module ✅\n  - Adds a parser for CLI arguments using the [UntitledCLIParser](https://github.com/MadLadSquad/UntitledCLIParser)\n- Theming module ✅\n  - Adds the [UntitledImGuiTheme](https://github.com/MadLadSquad/UntitledImGuiTheme) library for reading and writing themes ✅\n- OS Module for core OS interaction\n  - URL and file/folder opener with default application using the [UntitledOpen](https://github.com/MadLadSquad/UntitledOpen) library ✅\n  - Exec integration using the [UntitledExec](https://github.com/MadLadSquad/UntitledExec) library ✅\n  - Freedesktop: ✅\n    - [XDG Basedir](https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html) integration ✅\n    - [dbus](https://www.freedesktop.org/wiki/Software/dbus/) integration ✅\n\n### C \u0026 C++ APIs\nThe framework uses C++ as its main development language. Additionally, because we want to include support for full modability and \nplugins in mutiple languages, the user-facing API has a separate, completely C version that can be used to develop \napplications too!\n\nThrough this effort, as well as through libraries and tools like [dear_bindings](https://github.com/dearimgui/dear_bindings) and [cimgui\\_extra](https://github.com/MadLadSquad/cimgui_extra),\nboth the modules and the framework APIs have a C coverage of around 97%.\n\nThis focus on cross-compatibility allows developers to simply write the required bindings to their desired languages, and as long as \nthey have the main engine library compiled, they should be able to to easily write applications in C or any other programming \nlanguage that supports C style functions.\n\n### Native plugin support\nThe framework has native support for plugins with a handy plugin manager and interface that make it easy to make your application\nextensible from both C \u0026 C++, as well as other languages through the C \u0026 C++ APIs.\n\n### Supported platforms\nWe currently support the following platforms as official targets:\n\n1. Windows\n1. macOS\n1. Linux\n1. WASM\n\nAll of the operating systems above have generally the same features, as we're trying to have a generic platform to build desktop applications with. \n\nThe only exception is the Freedesktop submodule of the OS module, which provides more libraries for working with desktop environment features, that are \notherwise baked into the core OS libraries, when talking about Windows and macOS.\n\n### And much more\nThere are countless more small useful features that we could name, here's a short list:\n\n1. Easy texturing\n1. Bundled with utilities for dealing with UTF-8/16/32\n1. Client-side header bar\n1. Comes with a library for logging\n1. Comes with a library for working with YAML files\n1. Is extensively documented with up-to-date and stable documenation\n\n## Learn\nWe provide an always up-to-date, stable and extensive documentation, which you can find on the [wiki](https://github.com/MadLadSquad/UntitledImGuiFramework/wiki).\n\nIt is written as pure learning material, with code examples using both the C and C++ APIs. Aside from users of the framework,\nthe documentation also covers topics such as:\n\n1. Shipping the application to production for package maintainers\n1. Plugin development examples\n1. Developer tips\n1. Internal documentation and reference\n1. Collaboration tips\n\n## Showcase and Progress\nFollow the [UntitledDesktopEnvironment webpage](https://madladsquad.com/desktop) for updates \nand some feature highlights.\n\nTry out the new interactive web demo [here](https://uimgui.madladsquad.com/).\n\nThere are many applications, already in production, that use the framework. A list can be found \n[here](https://github.com/MadLadSquad/UntitledImGuiFramework/wiki/Applications-using-the-framework). If your application \nuses the framework, please contribute to the list!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmadladsquad%2Funtitledimguiframework","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmadladsquad%2Funtitledimguiframework","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmadladsquad%2Funtitledimguiframework/lists"}