Dear ImGui Bundle for Python and C++ application interfaces
Interactive Python & C++ apps for desktop, mobile, and web - powered by Dear ImGui. Stop fighting GUI frameworks. Start building.
At a glance
- What is it?
- Dear ImGui Bundle combines Dear ImGui with plotting, image inspection, node editing, Markdown, dialogs, and other add-ons for Python and C++. It suits developers building interactive tools across desktop, mobile, and web, but it is an immediate-mode GUI toolkit rather than a conventional retained-interface application stack.
- Who is it for?
- Adopt Dear ImGui Bundle when the same interface needs Python and C++ access, or when an interactive developer tool should deploy across desktop and WebAssembly. Do not adopt it merely because it wraps Dear ImGui if the required production application is better served by a retained widget system.
- Can I use it commercially?
- Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository received new commits within the last day.
- What is it written in?
- Mainly Python, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on October 23, 2026, and from our analysis. They are not legal advice.
Editorial analysis
What Dear ImGui Bundle solves
Dear ImGui Bundle addresses the assembly work surrounding Dear ImGui. The core Dear ImGui project supplies immediate-mode interface primitives, while this repository packages that foundation for both C++ and Python and adds related libraries for plotting, image inspection, node editing, file dialogs, knobs, spinners, toggles, and command palettes. The intended users are developers of interactive desktop, mobile, and web applications who need graphical controls without assembling every supporting library independently.
The bundle is especially relevant to engineering tools, research interfaces, creative-coding applications, and utilities where controls, plots, and image data share one screen. Its Python package metadata requires Python 3.10 or newer and lists no mandatory runtime dependencies. Optional groups cover plotting, image processing, Pydantic, a terminal widget, and several rendering backends. That separation lets a consumer choose only the facilities needed by the application, although the complete backend set is broader than a minimal installation.
This is not a visual-design system for conventional business forms or native mobile layouts. It is an immediate-mode toolkit, and the README does not describe a retained object hierarchy for forms. The appropriate fit therefore depends on whether the application is better represented as responsive panels, tool windows, plots, inspectors, and editable graphs.
How the Python and C++ bundle is organized
Dear ImGui Bundle sits above Dear ImGui rather than replacing its widget model. The README identifies Dear ImGui as the core widget layer, then divides the surrounding package into optional libraries and higher-level runners. ImPlot and ImPlot3D cover two-dimensional and three-dimensional plotting. ImmVision handles image inspection. imgui-node-editor, ImGuizmo, file dialogs, knobs, spinners, toggles, and a command palette extend the interface vocabulary. Markdown support is also included.
The C++ and Python interfaces are described as structurally similar. That matters for projects that contain both native components and Python-facing application layers because engineers can use corresponding concepts on either side. The repository layout supports more than packaging a single extension module. It contains bindings generation directories, external libraries, CMake files, Python package sources, Pyodide projects, tests, assets, and integration examples. Based on that layout, the Python distribution is backed by a native build rather than a pure-Python reimplementation.
The build metadata names `scikit-build-core` and `nanobind` as build requirements. Dear ImGui also requires application-side frame management and rendering integration. The optional Hello ImGui runner handles windows, backends, docking, and assets, while ImmApp is described as a way to activate add-ons such as ImPlot and Markdown. Projects that need tighter control can therefore choose between the higher-level runner and lower-level libraries, although the README excerpt does not document the exact setup sequence for either path.
Installing imgui-bundle and starting with web examples
The README does not give a pip installation command or a minimal Python program. It does identify the PyPI project name as `imgui-bundle` in `pyproject.toml`, and the project documentation is available at `https://imgui-bundle.pages.dev/doc`. A reader should use that documentation for the installation command that matches the intended platform and backend rather than infer one from the package metadata.
There is, however, a documented first-use route that needs no local installation. The README links to the Interactive Explorer, which presents the included libraries with browsable C++ and Python source, and to the Playground, which is described as a live Python sandbox based on Pyodide. The Playground includes ready-to-use demos and is intended for editing code and seeing results immediately. Those browser examples are the clearest confirmed starting point in the README.
The package requires Python `>=3.10`. Plotting through the optional plotting group requires `matplotlib` and `numpy`; image-processing features use `pillow` and `opencv-python`. Backend packages are also optional and include `PyOpenGL`, `glfw`, `PySDL2`, `PySDL3`, `wgpu`, `rendercanvas`, and `pyglet>=2.0.10`. The README does not state which backend is the default, so application owners must verify that choice before treating it as a default deployment assumption.
Desktop, mobile, and WebAssembly deployment paths
The documented platform range covers Windows, macOS, Linux, iOS, Android, and WebAssembly. The implementation routes differ by target. C++ applications can reach WebAssembly through Emscripten, while Python applications can use Pyodide. The repository includes Pyodide project directories and build references for deployable HTML templates, which confirms that browser deployment is a first-class path rather than a browser-based documentation demo alone.
That range comes with platform-specific constraints. A desktop build needs a supported windowing and rendering combination. Mobile builds need platform integration that cannot be inferred from the core package alone. WebAssembly introduces a different runtime and asset-loading model, and Python in the browser depends on Pyodide. The README does not document application startup, asset paths, input behavior, or deployment rollback for these targets, so it would be premature to treat one desktop command as universal.
The build status table points to separate workflows for OpenGL, Python bindings, wheels, Pyodide, Metal, DirectX, Vulkan, iOS, and Android. This separation indicates that platform coverage is maintained through multiple build paths. It does not establish that every optional library or runner is available identically on every platform. An adopter should check the documentation for the selected backend and release before relying on a particular renderer, add-on, or mobile target.
Bundle scope versus using Dear ImGui directly
The real alternative is to depend on Dear ImGui itself and assemble each additional library and backend separately. Dear ImGui Bundle explicitly builds on Dear ImGui, so it follows the same immediate-mode foundation. The difference is scope: the direct route exposes the core widget layer without bundling ImPlot, ImmVision, node editing, file dialogs, Markdown, assets, docking, and related components under one distribution. The bundle route centralizes those parts and provides Python as well as C++ access.
That convenience carries a larger dependency and platform surface. The repository includes external libraries, generated bindings, native build machinery, assets, and platform workflows. Someone needing only a small number of Dear ImGui widgets may prefer the smaller direct dependency. Someone maintaining a complex technical interface may benefit more from having plots, inspectors, and editors available through one coordinated package.
The higher-level runners make another trade-off. Hello ImGui can manage a window, backend, docking, and assets, which reduces application boilerplate. ImmApp can activate add-ons. Applications that need a custom platform integration or unusual rendering path may need to work below those runners. The README does not document an override or rollback mechanism, so the exact escape hatch must be verified in the API documentation.
License, maintenance, and upgrade work
The repository and Python package use the MIT license. Its permissive terms generally make the code accessible for integration into proprietary and open-source projects, subject to the license text and applicable notices. This is a licensing summary, not legal advice. Teams should preserve the required copyright and license notice when redistributing code or substantial portions of the project.
The repository is not archived, and its last push was on 2026-10-15. Recent release entries include `v1.92.900` on 2026-08-14, `v1.92.801` on 2026-05-13, and `v1.92.800` on 2026-05-13. The current `pyproject.toml` reports version `1.93.0` and describes it as based on an ImGui 1.93.0 work-in-progress docking tip. That mismatch between the listed releases and package metadata means consumers should confirm the intended version before installation rather than infer it from release naming.
Upgrades can involve more than Python code. `pyproject.toml` uses `scikit-build-core` and `nanobind`, while the repository contains CMake configuration, external libraries, assets, bindings generation, and platform build files. Changes in Dear ImGui, docking, generated bindings, or a backend can affect both C++ and Python builds. The changelog and target-specific documentation are therefore more useful upgrade references than the README's short feature list.
Editorial conclusion
Adopt Dear ImGui Bundle when the same interface needs Python and C++ access, or when an interactive developer tool should deploy across desktop and WebAssembly. Do not adopt it merely because it wraps Dear ImGui if the required production application is better served by a retained widget system. Verify the Python version, selected backend, rendering target, asset packaging, and platform build first, since these choices determine whether the bundle fits the application.
Frequently asked questions
Which Python versions does imgui-bundle support?
The project metadata requires Python 3.10 or newer. It also requires `scikit-build-core>=0.11.0` and `nanobind>=2.4.0` when building from source.
Does imgui-bundle support Python on WebAssembly?
Yes. The README says Python web applications can use Pyodide, and it identifies an online Playground and deployable HTML templates as part of the web support.
Which plotting and image libraries are included in imgui-bundle?
The integrated libraries include ImPlot, ImPlot3D, and ImmVision. On Python, the optional plotting group uses `matplotlib` and `numpy`, while image-processing features use `pillow` and `opencv-python`.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/pthom-imgui-bundle)Was this useful?