ImGuin
June 7, 2026 · View on GitHub
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
Contents
- Demo
- Features
- Requirements
- Install
- Quick Start
- Supported Frontends and Backends
- Bundled Libraries
- Examples
- Development
- Version Compatibility
- Tool Versions
- Related Projects
- Notes
Demo
Try the WebAssembly demo in your browser: glfw_opengl3_wasm_base

Source and build notes: Wasm example: glfw_opengl3_wasm_base
Features
- 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.
Requirements
Nim
- Nim 2.2.4 or later
Windows
- 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 make
Linux
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"
Install
nimble refresh
nimble uninstall imguin
nimble install imguin
If you are installing from a local checkout:
nimble install
Quick Start
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

Supported Frontends and Backends
| 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) |
Bundled Libraries
| 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
Examples
The main example repository is ImGuin examples.
GLFW + OpenGL3
nimble test
Dear ImGui + Naylib / Raylib + rlImGui

Development
The repository includes scripts for updating or downgrading the bundled Dear ImGui, CImGui, and extension sources. These steps are intended for package maintainers.
Futhark Setup
Install Futhark:
nimble install futhark
Confirm the installed Futhark version:
nimble dump futhark
The currently expected Futhark version is v0.16.0.
Windows
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
Linux
For Debian / Ubuntu family distributions:
sudo apt install libclang-19-dev
nimble install --passL:"-L/usr/lib/llvm-19" futhark
Update Bundled Sources
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/cimplot
Then 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.
Version Compatibility
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 |
Tool Versions
Windows 11
- 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
Linux Debian 13
- Nim Compiler Version 2.2.6
- GCC 14.2.0
- GNU Make 4.4.1
Related Projects
Nim / ImGui
Similar ImGui / CImGui Projects
| 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 |
File Dialogs
- Cross Platform File Dialog for Dear ImGui
- SDL2 ImGui File Dialogs
- SDL3 ImGui File Dialogs
- Dear ImGui file dialog without extra dependencies
Other UI / Graphics Links

SDL Platformer Examples

| 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 |
Notes
ImPlot / ImPlot3D
- 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.
Const CString Workaround
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
Footnotes
-
Depending on your project requirements, the mainstream nimgl/imgui project or related Nim ImGui packages may also be worth checking. See Related Projects. ↩