GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — GitHub - fezura/ImForge: Visual UI builder for Dear ImGui. Design inside your running app, bind to real C++ variables, export plain ImGui code that round-trips.

BranchesTags
Open more actions menu

Latest commit

 

History

4 Commits
4 Commits

Folders and files

NameName
Last commit message
Last commit date
.github/workflows
.github/workflows
 
 
cmake
cmake
 
 
docs
docs
 
 
examples
examples
 
 
include/imforge
include/imforge
 
 
packs
packs
 
 
presets
presets
 
 
schemas
schemas
 
 
src
src
 
 
templates
templates
 
 
tests
tests
 
 
tools
tools
 
 
.clang-format
.clang-format
 
 
.editorconfig
.editorconfig
 
 
.gitattributes
.gitattributes
 
 
.gitignore
.gitignore
 
 
CHANGELOG.md
CHANGELOG.md
 
 
CMakeLists.txt
CMakeLists.txt
 
 
CMakePresets.json
CMakePresets.json
 
 
CODE_OF_CONDUCT.md
CODE_OF_CONDUCT.md
 
 
CONTRIBUTING.md
CONTRIBUTING.md
 
 
LICENSE
LICENSE
 
 
README.md
README.md
 
 
SECURITY.md
SECURITY.md
 
 
THIRD_PARTY.md
THIRD_PARTY.md
 
 

Repository files navigation

ImForge

ImForge is a visual UI builder for Dear ImGui. You lay out a panel in the editor and, while you do, the same panel is drawn inside your running application, with your renderer, your fonts and your actual data. When you're happy with it you export plain ImGui:: code, which you can keep editing by hand and still reopen in the builder later.

The editor is an ImGui app itself, so the canvas shows what ImGui will really draw.

Editing a menu in the ImForge builder while the same menu updates inside a running DX11 app

What's new in 0.2

Widgets can move now. 0.2 adds keyframe motions that scale, rotate, skew, slide, fade, tint or type out any widget, with 212 presets to start from and a keyframe editor for your own. It also brings 36 ready-made designs you apply in one click, three new widget packs (63 widgets, 74 counting essentials), 12 more templates, and a Library panel where you can browse all of it with live previews and drag things onto your panel. Exported code still only needs Dear ImGui and a few headers that get copied next to it. The changelog has the details.

Library

Every preset card in the Library plays its motion live, so you can see what you're picking before you drop it on a widget. The chips filter by category.

The Library's Animations tab cycling through the All, Attention, Loop and Text categories with every card playing its motion

Designs preview on the canvas before you apply them, and custom motions get their own keyframe editor in the Anim Timeline.

The Designs tab with Synthwave Sunset selected and Preview on canvas turned on The Keyframes tab of the Anim Timeline editing a copy of the GlitchIn preset

What it does

You drag widgets and containers into a tree, set their properties, and bind them to your own variables. The builder reads your struct layouts from compile_commands.json (through libclang) or from a one-line IMFORGE_REFLECT macro, so cfg.aim.fov autocompletes and a checkbox bound to a float gets flagged before you compile anything.

Export gives you ordinary ImGui calls in your naming style. Your own code goes into marked regions and survives re-exports. Small edits to generated lines (a label, a size, a flag) are read back into the project, and anything the parser can't make sense of shows up as a conflict where you pick "keep my code" or "regenerate".

Beyond the stock widgets there are 74 extra ones in four packs (switches, knobs, range sliders, color and gradient pickers, gauges, sparklines, toasts, crosshair and radar previews and more), layout containers (stacks, grids, fill and % sizes, anchors), components with parameters and slots, themes and style classes, 36 designs that set theme, classes, fonts and motions together, icon fonts and DPI scaling. For movement there are keyframe motions with 212 presets, hover and press transitions, DrawList effects, and a shader blur behind windows that works on DX9, DX11, DX12, OpenGL 3 and Vulkan:

ImForge fx: shader blur behind Dear ImGui windows on DX9, DX11, DX12, OpenGL 3 and Vulkan

The examples/fx blur demos on all five backends, raw captures (see docs/media).

Quick start

You need CMake 3.21+ and a C++17 compiler. Dear ImGui, SDL3 and the rest are fetched on the first configure.

git clone https://github.com/fezura/ImForge
cd ImForge
cmake --preset wsl-gcc        # or: cmake --preset windows-msvc
cmake --build --preset wsl-gcc
./build/wsl-gcc/builder/imforge_builder

On Windows, build with cmake --build --preset windows-msvc-release and run build\windows-msvc\builder\Release\imforge_builder.exe.

Then add the client to a development build of your app:

#define IMFORGE_LIVE                      // remove for release: everything compiles to nothing
#include "imforge/imforge_client.h"

IMFORGE_REFLECT(Player, health, ammo, pos, name);
IMFORGE_REFLECT(Settings, esp, aimbot, fov);

// once, after ImGui::CreateContext() and the backend init
imforge::live::Connect("tcp://127.0.0.1:7777");   // or "pipe://ImForge", "shm://ImForge"
imforge::live::SetFontTextureRebuild(ImGui_ImplDX11_InvalidateDeviceObjects);   // per renderer

// every frame, before the backend NewFrame calls
imforge::live::PreNewFrame();

// every frame, after ImGui::NewFrame()
imforge::live::NewFrame();
imforge::live::Draw("MainMenu", { imforge::live::Bind("player", player),
                                  imforge::live::Bind("cfg", settings) });

Press Start in the builder's Live panel and run the app. When the panel looks right, press Ctrl+E to export generated/MainMenu.h/.cpp, replace the Draw call with ui::DrawMainMenu(state, player, settings), drop the IMFORGE_LIVE define and ship.

The user guide goes through all of this in more detail, and there are two tutorials: a cheat/mod menu and a dockable tool inspector.

How live attach works

The builder runs a small server (TCP by default, a named pipe or shared memory if you prefer) and your app connects to it. Pairing is automatic: when the builder starts listening it writes a one-time code to a file only your user account can read, the app picks it up before connecting, and from then on every message in both directions is authenticated. You never type a code. For an app in a VM or running as another user there's a copy-the-code fallback, described in docs/LIVE_ATTACH.md.

In a dev build the client header contains a small interpreter. The builder sends the panel definition as JSON and your app renders it, resolving bindings through the reflection table. Handlers and locked code blocks are real C++, so they're compiled into your app and need a rebuild when you change them; layout, properties, themes, bindings and no-code actions don't. Without IMFORGE_LIVE all of this compiles away, and the exported code depends on nothing but Dear ImGui (plus the small imb_runtime.h headers, copied next to the exported code, if a panel uses animations or effects).

ImForge doesn't inject into anything or hook any API. Your app already draws ImGui; the client just draws inside that frame.

Compared to other ImGui builders

ImForge ImRAD ImStudio Fellow ImGui
Runs as desktop app desktop app desktop app, web demo web app
Edits show up in your running app yes no no no
Reads edited code back yes, marked regions yes no no
Binds widgets to your variables yes, type checked yes no no
License MIT GPL-3.0 MIT MIT

This is based on each project's README as of late 2026. If something here is wrong or out of date, please open an issue.

Supported versions

Dear ImGui 1.85 up to the current release, on both master and docking. Newer API is gated by version, see docs/VERSION_MATRIX.md. The builder runs on Windows 10/11 and Linux; macOS isn't supported yet. Your app can use any platform and renderer ImGui supports. Generated code targets C++14, 17 or 20. It's built and tested with MSVC 2022 and GCC 13; other C++17 compilers should work but aren't in CI yet.

ImForge is at 0.2.0 and not released yet. There are no prebuilt binaries so far (docs/RELEASING.md has the plan), and what comes next is in docs/ROADMAP.md.

Docs

  • User guide and FAQ
  • Live attach, binding, generated code and round-trip
  • Motions, designs, widget packs, animations and effects
  • Components, custom widgets
  • Architecture, spec, design decisions

Contributing

Issues and pull requests are welcome. CONTRIBUTING.md covers the build, the rules for the headers and what tests a change needs. Security problems go through SECURITY.md, not public issues.

License

MIT, see LICENSE. Dependencies and the fonts downloaded at configure time are listed with their licenses in THIRD_PARTY.md.

About

Visual UI builder for Dear ImGui. Design inside your running app, bind to real C++ variables, export plain ImGui code that round-trips.

Topics

cppdear-imguigamedevgui-builderimguiui-designer

Resources

Readme
MIT license

Code of conduct

Code of conduct

Contributing

Contributing

Security policy

Security policy
Activity

Stars

9 stars

Watchers

1 watching

Forks

0 forks
Report repository

Releases

Packages

Contributors

Languages

You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.