ImGuin 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
- Demo
- Features
- Requirements
- Install
- Quick Start
- Supported Frontends and Backends
- Bundled Libraries
- Examples
- Development
- Version Compatibility
- Tool Versions
- Related Projects
- Notes
Try the WebAssembly demo in your browser: glfw_opengl3_wasm_base
Source and build notes: Wasm example: glfw_opengl3_wasm_base
- Dear ImGui bindings for Nim, generated with Futhark.
- Static-link focused C/C++ library integration.
- GLFW, SDL2, SDL3, Vulkan, OpenGL3, SDL renderer, SDL GPU, and WebAssembly examples.
- Bundled wrappers for ImPlot, ImNodes, ImGuizmo, ImGuiFileDialog, ImPlot3D, and more.
- Simple test application available through
nimble testornimble make.
- Nim 2.2.4 or later
- Windows 11 or later is recommended.
- MSYS2 / MinGW command-line tools.
make,cp,rm,git, and related Unix-style tools.
Install GLFW for the UCRT64 environment:
pacman -S mingw-w64-ucrt-x86_64-glfw makeUbuntu / 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-devInstall Nim with choosenim if Nim is not already installed:
curl https://nim-lang.org/choosenim/init.sh -sSf | shMake 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 imguinIf you are installing from a local checkout:
nimble installRun the default GLFW + OpenGL3 test application:
nimble testBuild the same test application without running it:
nimble makeThe 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:
- stb
- Font Awesome
- Naylib / Raylib with rlImGui
The main example repository is ImGuin examples.
nimble testThe 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 futharkConfirm the installed Futhark version:
nimble dump futharkThe 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\bin
For Debian / Ubuntu family distributions:
sudo apt install libclang-19-dev
nimble install --passL:"-L/usr/lib/llvm-19" futharkClone this repository into a development workspace:
mkdir imguin_dev
cd imguin_dev
git clone https://github.com/dinau/imguin
cd imguinClone the upstream C/C++ libraries:
make clonelibsThe external libraries are cloned under ../libs/.
Update or checkout each library version as needed, for example:
../libs/cimgui../libs/cimguizmo../libs/cimnodes../libs/cimplot
Then regenerate the Nim definitions:
make genIf needed, update the version metadata in imguin.nimble, then install the local
package:
nimble uninstall imguin
nimble installRepeat 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 |
- Nim Compiler Version 2.2.10
- GCC 16.1.0, MSYS2 build
- Visual Studio C++/C 2022
- Git 2.46.0.windows.1
- GNU Make 4.4.1
- MSYS2 / MinGW-UCRT tools
- Nim Compiler Version 2.2.6
- GCC 14.2.0
- GNU Make 4.4.1
| 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 / C | Compiler | Dear_Bindings_Build |
| Zig | Compiler | ImGuinZ |
- Cross Platform File Dialog for Dear ImGui
- SDL2 ImGui File Dialogs
- SDL3 ImGui File Dialogs
- Dear ImGui file dialog without extra dependencies
| 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 |
- This project builds and runs Dear ImGui, ImPlot, and ImPlot3D from Nim.
- ImPlot is compiled from source with
implot.handimplot.cpp. - ImPlot3D is compiled from source with
implot3d.handimplot3d.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 *".} = cstringFootnotes
-
Depending on your project requirements, the mainstream nimgl/imgui project or related Nim ImGui packages may also be worth checking. See Related Projects. ↩




