SkillAgentSearch skills...

Imguinz

Dear Imgui (CImGui), ImPlot (CImPlot), ImPlot3D(CImPlot3D) and many additional libraries with Zig

Install / Use

/learn @dinau/Imguinz

README

<!-- START doctoc generated TOC please keep comment here to allow auto update --> <!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE --> <!-- END doctoc generated TOC please keep comment here to allow auto update -->

ImGuinZ

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.6 dock (2026/02)

  • OS: Windows11 and Linux

  • Frontends and Backends

    | | GLFW | SDL3 | Win32 | | --- | :----: | :----: | :----: | OpenGL3<br>backend | YES | YES | - | SDLGPU3<br>backend | - | YES | - | DirectX 11<br>backend | - | - | YES

  • Features

    • Included Font Awesome Icon fonts.
      alt
    • Included GLFW 3.4.0 static library (for Windows)
    • Included SDL3.4.x libraries (for Windows)
    • Included STB libraries (only stb_image) for Load / Save images
    • Available ImPlot (CImPlot) / ImPlot3D with ImDrawIdx="unsigned int"
    • Enabled Input method (IME) flag with IMGUI_ENABLE_WIN32_DEFAULT_IME_FUNCTIONS

Zig fetch


  1. Zig fetch imguinz

    mkdir myapp
    cd myapp
    zig init
    
    zig fetch --save git+https://github.com/dinau/imguinz
    
  2. Add dependencies to build.zig

    const 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  ...
    
  3. 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("imguinz", 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("Color", &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");
        defer window.destroyImGui();
    
        _ = app.setTheme(.dark); // Theme: dark, classic, light, microsoft
    
        gui_main(&window); // GUI main proc
    }
    
  4. Build and run

    pwd
    myapp
    
    zig build run
    

    alt

[^except_raylib]: Except Raylib examples

Prerequisites


  • Zig compiler version confirmed

  • 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
    

Build and run


git clone https://github.com/dinau/imguinz
cd imguinz/examples/glfw_opengl3              # cd one of examples
make run                                      # or  zig build --release=fast run

Available libraries list at this moment


Library name / C lang. wrapper

Additional examples

Examples screenshots

ImGui-Toggle / CImGui-Toggle


ImGui-Toggle / CImGui-Toggle

main.zig

alt

ImGui-Knobs / CImGui-Knobs


ImGui-Knobs / [CImGui-Knobs](https://github.com/dinau/cimgui-knob

Related Skills

View on GitHub
GitHub Stars10
CategoryDevelopment
Updated4d ago
Forks0

Languages

Zig

Security Score

95/100

Audited on Mar 24, 2026

No findings