imgui_xl
Dear ImGui XL — An enhanced community fork of Dear ImGui, focused on backend improvements, CI/CD fixes, and extended tooling.
Dear ImGui is a bloat-free graphical user interface library for C++. It outputs optimized vertex buffers that you can render anytime in your 3D-pipeline-enabled application. It is fast, portable, renderer-agnostic, and self-contained (no external dependencies).
Live Demos
| Demo | Description | Link |
|---|---|---|
| Live ImGui (WASM) | Actual Dear ImGui compiled to WebAssembly via Emscripten | wasm/index.html |
| Showcase | Landing page with all demos + PR list | turtle-pb.github.io/imgui_xl |
| Echonation Visual | 5-mode audio-reactive canvas demo | echonation.html |
| Widget Playground | Visual GUI Builder — drag & drop widget designer (Visual Basic/Delphi style) | widgets_playground.html |
| Pixel OS Model | Interactive Pixel 8 Pro phone simulator with working browser | pixel_os_demo.html |
Widget Playground (Visual GUI Builder)
A drag-and-drop GUI designer for Dear ImGui, inspired by Visual Basic and Delphi form builders:
- Toolbox with 12 widget types: Button, Text, InputText, Checkbox, RadioButton, Slider, ProgressBar, ColorEdit, Combo, Separator, Group, SameLine
- Drag & drop widgets from toolbox to canvas
- Move & resize widgets directly on canvas
- Properties panel — edit position, size, text, color, visibility, enabled state
- Widget list — hierarchical view of all placed widgets
- Export — generate ImGui C++ code or JSON layout to clipboard
- Console — command interface with
help,clear,count,list,delete,export
Sample Layouts
Five ready-made layouts via the Samples menu: Audio Mixer, Settings Panel, Media Player, Color Picker, Debug Console — plus a full Pioneer DJ-S11 Mixer (2 decks, 3-band EQ, crossfader, jog wheels, FX).
Perform Mode & Web MIDI
- Perform Mode (
Pkey or ▶ Perform): all placed widgets become live controls — draggable sliders, toggleable buttons, rotatable jog wheels, animated VU meters - Web MIDI (Chrome/Edge/Opera): connect any MIDI controller, MIDI Learn (
Lkey) to map hardware CC/notes/pitch-bend to on-screen widgets, MIDI OUT feedback for LED rings and motor faders - Probe MIDI: hardware diagnostics with input/output enumeration + live message monitor
- Numark Mixstream Pro preset included as a starter mapping (requires Computer/MIDI mode on the unit)
Built-in Audio Engine (DJ-S11)
The DJ-S11 sample includes a fully functional audio engine via Web Audio API:
- 2 royalty-free procedural tracks, synthesized in-browser (no samples, no licensing, works offline): House 128 BPM on Deck A, Breakbeat 140 BPM on Deck B
- PLAY / CUE / SYNC — working sequencer per deck with beatmatching
- 3-band EQ (HI/MID/LOW) per channel via BiquadFilters
- Channel faders + equal-power crossfader
- Pitch control ±8% per deck
- Master volume + real RMS VU meters (AnalyserNode)
- Jog wheels nudge playback phase
- FX: ECHO on master (delay + feedback)
- Live playhead progress bars and time counters on each deck
Upstream Contributions
This fork tracks upstream and contributes back via PRs:
| PR | Issue | Description | Status |
|---|---|---|---|
| #9467 | #8878 | Android CI: Pin Gradle 9.4.1 via setup-gradle action | MERGED ✅ |
| #9473 | #8802 | OpenGL2/3: Backup and restore GL_UNPACK state in UpdateTexture() | MERGED ✅ |
| #9474 | #6627 | Android: Clear mouse pos on touch release + SDL2: Restore StartTextInput | MERGED ✅ |
| #9481 | #8597 | DX9/Allegro5/SDLRenderer2/SDLRenderer3: Defer texture destruction until UnusedFrames > 0 | Open |
| #9483 | #6302 | FreeType: Fix CBDT/COLR bitmap color emoji font loading (NotoColorEmoji, Twemoji) | Open |
| #9468 | #9390 | Vulkan: Fixed use-after-free in multi-viewport dynamic rendering | Closed |
| #9469 | #3446 | Android: Move JNI keyboard/clipboard into backend, add display metrics | Open (under review) |
Bug Fixes Summary
Merged upstream (3 PRs):
- Android CI — Pinned Gradle 9.4.1 via
setup-gradleaction, no binaries (#9467) - OpenGL GL_UNPACK state — Backup/restore
GL_UNPACK_ROW_LENGTHandGL_UNPACK_ALIGNMENTin UpdateTexture() to prevent caller state corruption (#9473) - Android touch release — Clear mouse position on
AMOTION_EVENT_ACTION_UPso buttons don't stay hovered (#6627) - SDL2 soft keyboard — Restored
SDL_StartTextInput()/SDL_StopTextInput()under#ifdef __ANDROID__for on-screen keyboard (#7636)
Open PRs (3):
- Texture destroy deferral — Defer destruction until
UnusedFrames > 0in DX9, Allegro5, SDLRenderer2, SDLRenderer3, matching all other backends. Addresses multi-threaded rendering safety concerns raised in #8597. (#9481) - CBDT/COLR emoji fonts — Fix FreeType loading of bitmap color emoji fonts (NotoColorEmoji, Twemoji COLR) by detecting CBDT table and using
FT_Select_Size(). (#9483) - Android backend cleanup — Move JNI keyboard/clipboard into backend, add display metrics, breaking change to Init() signature (#9469, under review by Omar)
Go Bindings
This fork includes Go (cgo) bindings for Dear ImGui — see bindings/go/README.md for full setup instructions (including the Windows MinGW gotchas).
bindings/go/
imgui_bridge.h/.cpp — Thin C API bridge (extern "C")
imgui.go — Go cgo wrapper package
README.md — Full documentation + troubleshooting
examples/example_golang/
main.go — Null-mode example
Makefile — Build targets
Quick start:
# Requires: Go 1.21+, C++ compiler (MinGW-w64 gcc on Windows), CGO_ENABLED=1
cd examples/example_golang
go mod tidy
CGO_ENABLED=1 go build -o imgui_go_example .
./imgui_go_example
Windows users: Go's cgo needs MinGW-w64 gcc (install via MSYS2:
pacman -S mingw-w64-x86_64-gcc). LLVM clang fails with-mthreadserrors. Verify withgo env CC CXX CGO_ENABLED.
Sync Status
| Branch | Tracks | Status |
|---|---|---|
master |
upstream/master |
Synced |
docking |
upstream/docking |
Synced |
Quick Start
# Clone
git clone https://github.com/Turtle-PB/imgui_xl.git
cd imgui_xl
# Build example_null (no backend dependencies needed)
# Windows (MinGW)
mingw32-make -C examples/example_null
# Windows (MSVC)
cd examples\example_null
.\build_win32.bat
# Linux/macOS
cd examples/example_null
make
Contributing
See CONTRIBUTING.md for guidelines on submitting issues, PRs, and syncing with upstream.
License
MIT License — see LICENSE.txt for details.
Credits
Dear ImGui is developed by Omar Cornut and every direct or indirect contributor to the GitHub repository.
Echonation visuals inspired by @Echonation. Fork by Paul Adcock (Turtle-PB).