- ImGuinZ
- Zig fetch
- Prerequisites
- Build and run
- Available libraries list at this moment
- Examples screenshots
- ImGui-Toggle / CImGui-Toggle
- ImGui-Knobs / CImGui-Knobs
- ImSpinner / CImSpinner
- Raylib example
- Raylib + ImGui + rlImGui
- ImPlot3D / CImPlot3D
- ImGuiFileDialog / CImGuiFileDialog
- ImGuiColorTextEdit / cimCTE
- ImNodes / CImNodes
- ImGuizmo / CImGuizmo
- imgui_markdown / cimgui_markdown
- Image load
- Showing CJK multi byte fonts and input UTF-8 text
- Icon font viewer
- Image load / save
- glfw_opengl3_implot
- ImPlot Demo written in Zig lang.
- Show / Hide console window
- SDL libraries
This project aims to simply and easily build Dear ImGui (CImGui) / ImPlot (CImPlot), Raylib, rlImGui and many other libaries and examples in Zig with less external dependencies.
-
ImGui / CImGui version 1.92.4 dock (2025/11)
-
OS: Windows11 and Linux
-
Frontends and Backends
GLFW SDL3 Win32 OpenGL3
backendYES YES - SDLGPU3
backend- YES - DirectX 11
backend- - YES -
Features
- Included Font Awesome Icon fonts.

- Included GLFW 3.4.0 static library (for Windows)
- Included SDL3 libraries (for Windows)
- Included STB libraries (only stb_image) for Load / Save images
- Available ImPlot (CImPlot) with
ImDrawIdx="unsigned int" - Enabled Input method (IME) flag with
IMGUI_ENABLE_WIN32_DEFAULT_IME_FUNCTIONS
- Included Font Awesome Icon fonts.
-
Zig fetch
imguinzmkdir myapp cd myapp zig init zig fetch --save git+https://github.com/dinau/imguinz -
Add dependencies to
build.zigconst imguinz = b.dependency("imguinz", .{}); const dependencies = .{ "appimgui", // Simple app framework "imspinner", // ImSpinner "imknobs", // ImKnobs "imtoggle", // ImToggle // "another_lib", }; inline for (dependencies) |dep_name| { const dep = imguinz.builder.dependency(dep_name, .{ .target = target, .optimize = optimize, }); exe.root_module.addImport(dep_name, dep.module(dep_name)); } exe.subsystem = .Windows; // Hide console window
You can set
dependencies(additional libraries), see imguinz/build.zig.zon"appimgui" <- Simple app framework for GLFW and OpenGL backend "imspinner" <- ImSpinner "imguizmo" <- ImGuizmo "imknobs" <- ImKnobs "imnodes" <- ImNodes "implot" <- ImPlot "implot3d" <- ImPlot3D "imtoggle" <- ImToggle "rlimgui" <- rlImgui ... snip ...
-
Edit src/main.zig
const app = @import("appimgui"); const ig = app.ig; const spinner = @import("imspinner"); const knobs = @import("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.igShowDemoWindow(null); // Show demo window // ig.igSetNextWindowSize(.{ .x = 0.0, .y = 0.0 }, 0); // Fit window size depending on the size of the widgets _ = ig.igBegin("Spinner", null, 0); // Show Spinner window spinner.SpinnerAtomEx("atom", 16, 2, spn_col, speed, 3); ig.igSameLine(0.0, -1.0); _ = tgl.Toggle("Speed", &fspd, .{ .x = 0.0, .y = 0.0 }); if (fspd) speed = 6.0 else speed = 2.0; if (knobs.IgKnobFloat("Mix", &col, -1.0, 1.0, 0.1, "%.1f", knobs.IgKnobVariant_Stepped, 0, 0, 10, -1, -1)) { spn_col.Value.x = col; } ig.igEnd(); window.render(); // render } // end while loop } pub fn main() !void { var window = try app.Window.createImGui(1024, 900, "ImGui window in Zig lang."); 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
-
Zig compiler version confirmed
- Windows: zig-x86_64-windows-0.15.2.zip
- Linux: zig-x86_64-linux-0.15.2.tar.xz
-
WindowsOS
-
Windows11
-
MSys2/MinGW basic commands (make, rm, cp, strip ...)
pacman -S make
-
-
Linux OS (Ubuntu / Debian families)
sudo apt install lib{opengl-dev,gl1-mesa-dev,glfw3,glfw3-dev,xcursor-dev,xinerama-dev,xi-dev} git make-
SDL3
If you are using Debian13 Trixie, add sdl3 library,sudo apt install libsdl3-dev
otherwise install SDL3 manually
-
git clone https://github.com/dinau/imguinz
cd imguinz/examples/glfw_opengl3 # cd one of examples
make run # or zig build --release=fast runLibrary name / C lang. wrapper
- ImGui / CImGui (2024/11)
- ImPlot / CImPlot (2025)
- ImPlot3d / CImPlot3d (2025/07)
- ImNodes / CImNodes (2025/06)
- ImGuizmo / CImGuizmo (2025/07)
- ImGui-Knobs / CImGui-Knobs (2025/05)
- ImGuiFileDialog / CImGuiFileDialog (2025/07)
- ImGui_Toggle / CimGui_Toggle (2025/05)
- ImSpinner / CImSpinner (2025/05)
- ImGuiColorTextEdit / cimCTE (2025/07)
- ImGui_Markdown (2025/09) WIP
Additional examples
raylib_cjk: Showing multi byte(CJK) fonts
ImGuiFileDialog / CImGuiFileDialog
WIP
imgui_markdown / cImgui_markdown
Image load and magnifying glass
glfw_opengl3: main.zig / sdl3_opengl3: main.zig / sdl3_sdlgpu3: main.zig
main.zig, magnifying glass, incremental search
Image load / save and magnifying glass.
Image file captured would be saved in .the folder ./zig-out/bin.
Image can be saved as JPEG / PNG / BMP / TGA file.
Now work in progress.
pwd
examples/imPlotDemo
make run # or zig build --release=fast runOpen build.zig in each example folder and
Hide console window: Default,
Show console window: Comment out this line as follows,
... snip ...
//exe.subsystem = .Windows; // Hide console window
... snip ...and rebuild example.
https://github.com/libsdl-org/SDL/releases
| 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, C lang. | Compiler | Dear_Bindings_Build |
| Zig | Compiler | ImGuinZ |
| 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 | SDL2 | Zig-Platformer |
Notes:
- Using ImPlot3D / ImPlot with Zig
- Zig + ImGui + ImPlot3D / ImPlot demo
- Build with ImPlot3D / ImPlot / Raylib / rlImGui
- ImPlot3D integration example
- This project builds and runs Dear ImGui + ImPlot3D / ImPlot / Raylib / rlImGui using Zig.
- ImPlot3D is compiled from source (implot3d.h / implot3d.cpp)
- ImPlot is compiled from source (implot.h / implot.cpp)
Footnotes
-
Windows11
[Settings] - [Privacy & Security] - [For developers] - [Developer Mode]: [ON] ↩



























