r2
Free open-source Cloudflare R2 desktop client and S3 GUI for macOS, Windows, and Linux. Manage Cloudflare R2, AWS S3, M…
Dear Imgui / CImGui, ImPlot/CImPlot wrapper for Nim language
git clone https://github.com/dinau/imguin.gitdinau/imguinImGuin is a Nim wrapper1 for Dear ImGui through CImGui. It bundles Nim bindings and build support for Dear ImGui and several popular Dear ImGui extensions.
Current bundled Dear ImGui / CImGui version: v1.92.8 dock
Current ImGuin package version: 1.92.8.0
Updated: 2026/06
Try the WebAssembly demo in your browser: glfw_opengl3_wasm_base
Source and build notes: Wasm example: glfw_opengl3_wasm_base
nimble test or nimble make.make, cp, rm, git, and related Unix-style tools.Install GLFW for the UCRT64 environment:
pacman -S mingw-w64-ucrt-x86_64-glfw make
Ubuntu / Debian family distributions are tested most often.
sudo apt install gcc g++ make git curl xz-utils sudo apt install libopengl-dev libgl1-mesa-dev libglfw3-dev \ libxcursor-dev libxinerama-dev libxi-dev libsdl2-dev
Install Nim with choosenim if Nim is not already installed:
curl https://nim-lang.org/choosenim/init.sh -sSf | sh
Make sure the Nimble binary directory is available in your PATH, for example:
export PATH="$HOME/.nimble/bin:$PATH"
nimble refresh nimble uninstall imguin nimble install imguin
If you are installing from a local checkout:
pwd imguin nimble install
Run the default GLFW + OpenGL3 test application:
nimble test
Build the same test application without running it:
nimble make
The main test source is: tests/tglfw_opengl3.nim
| Frontend | Backends |
|---|---|
| GLFW | OpenGL3, Vulkan (2026/03) |
| SDL2 | OpenGL3, SDL_Renderer2 |
| SDL3 | OpenGL3, SDL_Renderer3, SDL_GPU3, Vulkan (2026/03) |
| WASM | WebGL 2.0 (2026/04) |
| Status | Library | C wrapper / integration |
|---|---|---|
| Done | Dear ImGui | CImGui |
| Done | ImPlot | CImPlot |
| Done | ImNodes | CImNodes |
| Done | ImGuizmo | CImGuizmo |
| Done | ImGui-Knobs | CImGui-Knobs |
| Done | ImGuiFileDialog | CImGuiFileDialog |
| Done | ImGui_Toggle | CImGui_Toggle |
| Done | ImPlot3D | CImPlot3D |
| Done | ImSpinner | Built from source |
| Done | ImGuiColorTextEdit | cimCTE, 2025/03 |
| Done | ImGuiTextSelect | CImGuiTextSelect, 2025/09 |
| Done | imgui_zoomable_image | cimgui_zoomable_image, 2026/04 |
| WIP | ImGui_Markdown | Planned, 2025/09 |
Additional libraries and assets:
The main example repository is ImGuin examples.
nimble test
The repository includes scripts for updating or downgrading the bundled Dear ImGui, CImGui, and extension sources. These steps are intended for package maintainers.
Install Futhark:
nimble install futhark
Confirm the installed Futhark version:
nimble dump futhark
The currently expected Futhark version is v0.16.0.
Install Clang / LLVM. See the Futhark installation guide.
libclang.a must be available in the library path, for example:
c:\llvm\libc:\msys64\ucrt64\binFor Debian / Ubuntu family distributions:
sudo apt install libclang-19-dev nimble install --passL:"-L/usr/lib/llvm-19" futhark
Clone this repository into a development workspace:
mkdir imguin_dev cd imguin_dev git clone https://github.com/dinau/imguin cd imguin
Clone the upstream C/C++ libraries:
make clonelibs
The external libraries are cloned under ../libs/.
Update or checkout each library version as needed, for example:
../libs/cimgui../libs/cimguizmo../libs/cimnodes../libs/cimplotThen regenerate the Nim definitions:
make gen
If needed, update the version metadata in imguin.nimble, then install the local
package:
nimble uninstall imguin nimble install
Repeat the update, checkout, and make gen steps when moving to another upstream
version.
Windows builds are confirmed unless otherwise noted.
| ImGui / CImGui | ImGuin | Date | Linux Debian family | Notes |
|---|---|---|---|---|
| 1.92.8 dock | 1.92.8.0 | 2026/06 | OK | |
| 1.92.7 dock | 1.92.7.0 | 2026/04 | OK | |
| 1.92.6 dock | 1.92.6.2 | 2026/03 | OK | Added Wasm function |
| 1.92.6 dock | 1.92.6.1 | 2026/03 | OK | Breaking change in impl_glfw.nim |
| 1.92.6 dock | 1.92.6.0 | 2026/02 | OK | |
| 1.92.4 dock | 1.92.4.0 | 2025/11 | OK | |
| 1.92.3 dock | 1.92.3.0 | 2025/09 | OK | |
| 1.92.2b dock | 1.92.2.1 | 2025/09 | OK | |
| 1.92.2b dock | 1.92.2.0 | 2025/08 | OK | |
| 1.92.0 dock | 1.92.0.2 | 2025/08 | OK | |
| 1.92.0 dock | 1.92.0.1 | 2025/07 | OK | |
| 1.91.9b dock | 1.91.9.4 | 2025/06 | OK | |
| 1.91.8 dock | 1.91.8.2 | 2025/03 | OK | |
| 1.91.6 dock | 1.91.6.15 | 2025/01 | Not checked | Probably works |
| 1.91.4 dock | 1.91.4.2 | 2024/12 | OK | |
| 1.91.3 dock | 1.91.3.1 | 2024/10 | Not checked | Probably works |
| 1.91.2 dock | 1.91.2.0 | 2024/10 | Not checked | Probably works |
| 1.91.1 dock | 1.91.1.2 | 2024/09 | Partial | Except ImNodes example |
| 1.91.0 dock | 1.91.0.0 | 2024/08 | Not checked | Probably works |
| 1.90.4 dock | 1.90.4.2 | 2024/02 | Use Nim 2.0.2 | |
| 1.89.9 dock | 1.89.9.8 | 2023/12 | Partial | Except ImNodes and SDL2 examples; works best in debug mode |
| Language | Type | Project |
|---|---|---|
| Lua | Script | LuaJITImGui |
| NeLua | Compiler | NeLuaImGui, NeLuaImGui2 |
| Nim | Compiler | ImGuin, Nimgl_test, Nim_implot |
| Python | Script | DearPyGui for 32-bit Windows binary |
| Ruby | Script | igRuby examples |
| Zig | Compiler | ImGuinz / ImGuinz2 |
| Language | Type | SDL | Project |
|---|---|---|---|
| LuaJIT | Script | SDL2 | LuaJIT-Platformer |
| Nelua | Compiler | SDL2 | NeLua-Platformer |
| Nim | Compiler | SDL3 / SDL2 | Nim-Platformer-sdl2, Nim-Platformer-sdl3 |
| Ruby | Script | SDL3 | Ruby-Platformer |
| Zig | Compiler | SDL2 | Zig-Platformer |
implot.h and implot.cpp.implot3d.h and implot3d.cpp.If you hit this C compiler warning:
error: assignment to 'char **' from incompatible pointer type 'const char * const*' [-Wincompatible-pointer-types]
This Nim declaration may help:
type ConstCstring {.importc: "const char *".} = cstring
Depending on your project requirements, the mainstream nimgl/imgui project or related Nim ImGui packages may also be worth checking. See Related Projects. ↩
more like this
search projects, people, and tags