Releases: ProtectedVariable/DearImXML
v0.1-alpha
Dear ImXML — v0.1.0-alpha (Initial alpha)
Release date: 2026-01-26
This is the first public alpha release of Dear ImXML — an experimental library to declare Dear ImGui user interfaces from a human-friendly XML format and render them at runtime.
This is an early-stage project: the XML syntax, API and renderer behavior are considered experimental and will evolve. Your feedback, bug reports and usage examples are essential to shape the project.
Highlights (what's included in this alpha)
- Declarative XML → ImGui rendering pipeline: write UI in XML and render it with Dear ImGui.
- Dynamic binding: register C++ variables/buffers with the renderer and access them from XML using
dynamic="name". - Flags parsing: specify ImGui flags as strings (examples:
flags="ImGuiWindowFlags_MenuBar | ImGuiWindowFlags_NoCollapse"). - Bundled Dear ImGui for convenience: this release ships with Dear ImGui v1.95.2-docking integrated (you may opt out and link your own ImGui).
- Demo & docs: example XML and demo GIF are included under
doc/and an example app in theexamplefolder.
Supported / showcased tags (selected)
- Layout & formatting:
- Sameline, Separator, SeparatorText
- Table + Table-related tags:
table,setupcolumn,header,row,column - Grouping:
group,begin(window),child
- Containers & menus:
- Menubar, MainMenubar, Menu, MenuItem
- Popup modal (BeginPopupModal) and PopupContextWindow
- Combo + selectable options
- TabBar / TabItem
- Widgets:
- Button, Text, SliderFloat, InputFloat, InputText, InputTextMultiline
- ColorPicker3/4, ColorEdit3/4
- Checkbox, Selectable
- TreeNode
- Example XML (from README):
- Complex window with menubar, table with setup columns/rows, nested tree nodes, combo, inputfloat, checkbox, child windows and a tabbar with multiline text widgets.
- Build integration:
- CMake-friendly:
FetchContentsnippet to include DearImXML in your CMake project. - Option
IMXML_INTERNAL_IMGUIcan be toggled to use your own ImGui instead of the bundled one.
- CMake-friendly:
Why this is an alpha
- API & XML schema are experimental and may change in breaking ways as the project matures.
- Not all Dear ImGui widgets and features are currently supported — the README shows a developing, growing feature set.
- Parser: the implementation favors a compact/lightweight parser and has limited XML features compared to a full XML library. Complex XML constructs may not be handled.
- Minimal validation: runtime errors may occur for missing dynamic binds or malformed XML; error messages and diagnostics are still basic.
Known limitations / caveats
- Partial ImGui coverage: many ImGui widgets, advanced flags and options are not yet available or fully tunable from XML.
- XML robustness: the parser is simple; multi-line tags, CDATA, escaped quotes inside attributes or complex nested text content may not be supported.
- Event binding is primitive: XMLEventHandler hooks exist (onNodeBegin / onNodeEnd / onEvent) but there is no declarative binding language for callbacks in XML yet.
- Runtime checks are sparse: missing dynamic binds or wrong bind types can cause errors—add defensive checks in your integration.
- This release is not recommended for production-critical systems yet.
Quick start (from README)
- Add DearImXML to your CMake project with FetchContent:
message(STATUS "Fetching DearImXML") include(FetchContent) FetchContent_Declare( DearImXML GIT_REPOSITORY https://github.com/ProtectedVariable/DearImXML.git GIT_TAG master ) FetchContent_MakeAvailable(DearImXML) target_link_libraries(${PROJECT_NAME} PUBLIC DearImXML)
- Example executable setup usually needs your ImGui backend files listed in the build (the repo's CMake shows an example).
- If you prefer your own ImGui version, set
IMXML_INTERNAL_IMGUItoOFFand link your ImGui.
Where to look in the repo
- README with example XML:
README.md - Documentation:
doc/folder - Example app:
examplefolder - Code entry points:
- XML reader / tag list / flags parsing —
DearImXML/src/XMLReader.cpp - XML rendering → ImGui calls —
DearImXML/src/XMLRenderer.cpp - Event hooks —
DearImXML/include/XMLEventHandler.h
- XML reader / tag list / flags parsing —
How to give feedback / contribute
- Open issues: file bugs, feature requests, or proposals on the repository. Provide:
- Short description and reproduction steps
- Minimal XML sample that demonstrates the issue/feature
- Build output / runtime logs if applicable
- Pull requests are welcome.
Roadmap (short-term priorities)
- Expand widget coverage.
- More examples, doc pages and tests; CI integration.
License
- Distributed under the LGPLv2.1 License. See
LICENSEfor more information.
Thanks
- Thank you for testing this alpha. This project is intended to be lightweight and practical. Your feedback — issues, example XML files, and PRs — is the best way to help shape Dear ImXML into a useful tool.
Contact
- Please open an issue in the repo for quick feedback.
cc @ocornut , I can only imagine how busy you are, but if you have any feedback let me know