README.md
June 16, 2026 · View on GitHub
- Caution: Due to certain reasons, this repository will be renamed to imguinz2 in a few days.
Caution: Due to certain reasons, this repository will be renamed to imguinz2 in a few days.
After the repository is renamed to imguinz2, navigate to your dear_bindings_build project folder in the terminal or command prompt and run the following command once:
git remote set-url origin https://github.com/dinau/imguinz2.git
Alternatively, you can simply perform a fresh clone of the new URL:
https://github.com/dinau/imguinz2.git
ImGuinz2
This project aims to simply and easily build Dear ImGui examples with C and Zig using Dear_Bindings as first step. And one can use many other libaries and examples with less external dependencies (Except Raylib library).
DearBindings: dear_bindings_v0.18_ImGui_v1.92.8-docking
Dear ImGui: 1.92.8 dock (2026/06)
Zig fetch
Use zig-0.16.0
-
Zig fetch
imguinz2mkdir myapp cd myapp zig init zig fetch --save git+https://github.com/dinau/imguinz2 -
Add dependencies to
build.zig
Please insert the following lines aboveb.installArtifact(exe);.const imguinz2 = b.dependency("imguinz2", .{}); const dependencies = .{ "appimgui", // Simple app framework "imspinner", // ImSpinner "imknobs", // ImKnobs "imtoggle", // ImToggle // "another_lib", }; inline for (dependencies) |dep_name| { const dep = imguinz2.builder.dependency(dep_name, .{ .target = target, .optimize = optimize, }); exe.root_module.addImport(dep_name, dep.module(dep_name)); } exe.subsystem = .Windows; // Hide console windowYou can set
dependencies(additional libraries), see imguinz2/build.zig.zon"appimgui" <- Simple app framework for GLFW and OpenGL backend "imspinner" <- ImSpinner "imguizmo" <- ImGuizmo "imknobs" <- ImKnobs "imnodes" <- ImNodes "implot" <- ImPlots "implot3d" <- ImPlot3D "imtoggle" <- ImToggle "rlimgui" <- rlImgui ... snip ... -
Edit src/main.zig
const app = @import("appimgui"); const ig = app.ig; const spinner = @import("imspinner"); // ImSpinner const knobs = @import("imknobs"); // ImKnobs const tgl = @import("imtoggle"); // ImToggle // gui_main() pub fn gui_main(window: *app.Window) void { var col: f32 = 1.0; var fspd: bool = false; var speed: f32 = 2.0; var spn_col: spinner.ImColor = .{ .Value = .{ .x = col, .y = 1.0, .z = 1.0, .w = 1.0 } }; while (!window.shouldClose()) { // main loop window.pollEvents(); window.frame(); // Start ImGui frame ig.ImGui_ShowDemoWindow(null); // Show ImGui demo window ig.ImGui_SetNextWindowSize(.{ .x = 0.0, .y = 0.0 }, 0); // Fit window size depending on the size of the widgets _ = ig.ImGui_Begin("Demo", null, 0); // Show demo window spinner.SpinnerAtomEx("atom", 16, 2, spn_col, speed, 3); ig.ImGui_SameLine(); _ = tgl.Toggle("Speed", &fspd, .{ .x = 0.0, .y = 0.0 }); if (fspd) speed = 6.0 else speed = 2.0; if (knobs.IgKnobFloat("Color", &col, 0.0, 1.0, 0.05, "%.2f", knobs.IgKnobVariant_Stepped, 0, 0, 10, -1, -1)) { spn_col.Value.x = col; } ig.ImGui_End(); window.render(); // render } // end while loop } pub fn main() !void { var window = try app.Window.createImGui(1024, 900, "ImGui window in Zig"); defer window.destroyImGui(); _ = app.setTheme(.dark); // Theme: dark, classic, light, microsoft gui_main(&window); // GUI main proc } -
Build and run
pwd myapp zig build run # or zig build --release=fast
Try Wasm demo in your browser
Click link for live demo: Click here

Frontends and Backends
| Frontends | Backends |
|---|---|
| GLFW3 | OpenGL3 |
| SDL3 | OpenGL3, SDL3GPU |
| Win32 | DirectX 11(D3D11) |
Prerequisites
-
Zig Compiler
- zig-0.16.0
Windows: zig-x86_64-windows-0.16.0.zip
Linux: zig-x86_64-linux-0.16.0.tar.xz - zig-0.17.0-dev.8641 (2026/06/16)
-
zig-0.15.2Deprecated
- zig-0.16.0
-
Windows11
-
Optional: MSys2/MinGW basic commands (make, rm, cp ...)
pacman -S make
-
-
Linux OS: Debian13 Trixie / Ubuntu families
sudo apt install make gcc lib{opengl-dev,gl1-mesa-dev,glfw3,glfw3-dev}- SDL3
Install SDL3 library
- SDL3
Available libraries list at this moment
| Library | C Wrapper | Date | |
|---|---|---|---|
| YES | Dear ImGui | Dear_Bindings | 2024/06 |
| YES | ImGui-Knobs | CImGui-Knobs | 2025/07 |
| YES | ImGuiFileDialog | CImGuiFileDialog | 2025/07 |
| YES | ImGui_Toggle | CimGui_Toggle | 2025/07 |
| YES | ImSpinner | CImSpinner | 2025/07 |
| YES | ImGuiColorTextEdit | cimCTE | 2025/08 |
| YES | ImGuizmo | CImGuizmo | 2025/08 |
| YES | ImNodes | CImNodes | 2025/08 |
| YES | ImPlot | CImPlot | 2025/08 |
| YES | ImPlot3d | CImPlot3d | 2025/08 |
| YES | imgui_zoomable_image | cimgui_zoomable_image | 2026/04 |
| WIP | ImGui_Markdown | CImGui_MarkDown | - |
| YES | STB | - | |
| YES | Font-Awesome | - |
Additional examples
- Raylib, raylib-zig, rlImGui (2025/11)
Build and run
git clone https://github.com/dinau/imguinz2
cd imguinz2/examples/zig_glfw_opengl3 # for example
zig build run --release=fast # or make run
Examples screen shots
zig_imknobs

zig_imtoggle

zig_imspinner

Raylib example
First fetch raylib,
zig fetch --save git+https://github.com/raysan5/raylib

raylib_cjk: Showing multi byte(CJK) fonts

Raylib + ImGui + rlImGui
First fetch raylib,
zig fetch --save git+https://github.com/raysan5/raylib

zig_imfiledialog

zig_imgui_markdown
- Work in progress

zig_iconfontviewer
- Incremantal search
- Magnifing glass
![]()
zig_imcolortextedit

zig_imguizmo

zig_imnodes

zig_implot / zig_implot3d
zig_imPlotDemo written in Zig.


Image load / save (OpenGL, SDL3, SDL3GPU)
| Language | GLFW | Magnifing glass | Image load /save | Note |
|---|---|---|---|---|
| C | glfw_opengl3_image_load | - | Y | |
| C | glfw_opengl3_image_save | - | Y | |
| Zig | zig_glfw_opengl3_image_load | Y | Y | |
| Zig | zig_sdl3_sdlgup3 / zig_sdl3_opengl3 | - | load | Download SDL3.dll on Windows |
- Image file captured will be saved in current folder.
- Image format can be selected from
JPEG / PNG / BMP / TGA.

zig_glfw_opengl3
- Basic example
| Language | GLFW | SDL3 |
|---|---|---|
| C | glfw_opengl3, glfw_opengl3_jp | sdl3_opengl3 |
| Zig | zig_glfw_opengl3 | zig_sdl3_opengl3 |

zig_imgui_zoomable_image
Try Wasm live demo in your browser
Click link for live demo: Click here

Hiding console window
-
Zig examples
Openbuild.zigin each example folder and enable the option line as follows,... snip ... exe.subsystem = .Windows; // Hide console window ... snip ...and execute
make. -
C examples
OpenMakefilein each example folder and change the option line as follows,... snip ... HIDE_CONSOLE_WINDOW = true ... snip ...and execute
make.
SDL libraries
https://github.com/libsdl-org/SDL
https://github.com/libsdl-org/SDL/releases
My tools version
- make: GNU Make 4.4.1
- Python 3.14.3
Similar project ImGui / CImGui
| Language | Project | |
|---|---|---|
| Lua | Script | LuaJITImGui |
| NeLua | Compiler | NeLuaImGui / NeLuaImGui2 |
| Nim | Compiler | ImGuin, Nimgl_test, Nim_implot |
| Python | Script | DearPyGui for 32bit WindowsOS Binary |
| Ruby | Script | igRuby_Examples |
| Zig | Compiler | ImGuinZ with CImGui |
| Zig, C | Compiler | ImGuinZ2 with Dear Binindings |
SDL game tutorial Platfromer

| Language | 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 | SDL3 / SDL2 | Zig-Platformer |
Footnotes
-
Except Raylib and win32_dx11 examples ↩