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

Try the WebAssembly demo in your browser: glfw_opengl3_wasm_base

WebAssembly demo

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 test or nimble 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

GLFW OpenGL3 test application

Supported Frontends and Backends

FrontendBackends
GLFWOpenGL3, Vulkan (2026/03)
SDL2OpenGL3, SDL_Renderer2
SDL3OpenGL3, SDL_Renderer3, SDL_GPU3, Vulkan (2026/03)
WASMWebGL 2.0 (2026/04)

Bundled Libraries

StatusLibraryC wrapper / integration
DoneDear ImGuiCImGui
DoneImPlotCImPlot
DoneImNodesCImNodes
DoneImGuizmoCImGuizmo
DoneImGui-KnobsCImGui-Knobs
DoneImGuiFileDialogCImGuiFileDialog
DoneImGui_ToggleCImGui_Toggle
DoneImPlot3DCImPlot3D
DoneImSpinnerBuilt from source
DoneImGuiColorTextEditcimCTE, 2025/03
DoneImGuiTextSelectCImGuiTextSelect, 2025/09
Doneimgui_zoomable_imagecimgui_zoomable_image, 2026/04
WIPImGui_MarkdownPlanned, 2025/09

Additional libraries and assets:

Examples

The main example repository is ImGuin examples.

GLFW + OpenGL3

nimble test

Dear ImGui + Naylib / Raylib + rlImGui

rlimgui_basic example

rlImGui example

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\lib
  • c:\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 / CImGuiImGuinDateLinux Debian familyNotes
1.92.8 dock1.92.8.02026/06OK
1.92.7 dock1.92.7.02026/04OK
1.92.6 dock1.92.6.22026/03OKAdded Wasm function
1.92.6 dock1.92.6.12026/03OKBreaking change in impl_glfw.nim
1.92.6 dock1.92.6.02026/02OK
1.92.4 dock1.92.4.02025/11OK
1.92.3 dock1.92.3.02025/09OK
1.92.2b dock1.92.2.12025/09OK
1.92.2b dock1.92.2.02025/08OK
1.92.0 dock1.92.0.22025/08OK
1.92.0 dock1.92.0.12025/07OK
1.91.9b dock1.91.9.42025/06OK
1.91.8 dock1.91.8.22025/03OK
1.91.6 dock1.91.6.152025/01Not checkedProbably works
1.91.4 dock1.91.4.22024/12OK
1.91.3 dock1.91.3.12024/10Not checkedProbably works
1.91.2 dock1.91.2.02024/10Not checkedProbably works
1.91.1 dock1.91.1.22024/09PartialExcept ImNodes example
1.91.0 dock1.91.0.02024/08Not checkedProbably works
1.90.4 dock1.90.4.22024/02Use Nim 2.0.2
1.89.9 dock1.89.9.82023/12PartialExcept 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

Nim / ImGui

Similar ImGui / CImGui Projects

LanguageTypeProject
LuaScriptLuaJITImGui
NeLuaCompilerNeLuaImGui, NeLuaImGui2
NimCompilerImGuin, Nimgl_test, Nim_implot
PythonScriptDearPyGui for 32-bit Windows binary
RubyScriptigRuby examples
Zig / CCompilerDear_Bindings_Build
ZigCompilerImGuinZ

File Dialogs

ImPlot screenshot

SDL Platformer Examples

SDL platformer

LanguageTypeSDLProject
LuaJITScriptSDL2LuaJIT-Platformer
NeluaCompilerSDL2NeLua-Platformer
NimCompilerSDL3 / SDL2Nim-Platformer-sdl2, Nim-Platformer-sdl3
RubyScriptSDL3Ruby-Platformer
ZigCompilerSDL2Zig-Platformer

Notes

ImPlot / ImPlot3D

  • This project builds and runs Dear ImGui, ImPlot, and ImPlot3D from Nim.
  • ImPlot is compiled from source with implot.h and implot.cpp.
  • ImPlot3D is compiled from source with implot3d.h and implot3d.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

  1. Depending on your project requirements, the mainstream nimgl/imgui project or related Nim ImGui packages may also be worth checking. See Related Projects.