Skip to content

dinau/imguin

Repository files navigation

ImGuin

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

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:

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 / 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

Other UI / Graphics Links

ImPlot screenshot

SDL Platformer Examples

SDL platformer

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.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.