Skip to content

Releases: ProtectedVariable/DearImXML

v0.1-alpha

26 Jan 09:52

Choose a tag to compare

v0.1-alpha Pre-release
Pre-release

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 the example folder.

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: FetchContent snippet to include DearImXML in your CMake project.
    • Option IMXML_INTERNAL_IMGUI can be toggled to use your own ImGui instead of the bundled one.

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)

  1. 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)
  2. Example executable setup usually needs your ImGui backend files listed in the build (the repo's CMake shows an example).
  3. If you prefer your own ImGui version, set IMXML_INTERNAL_IMGUI to OFF and link your ImGui.

Where to look in the repo

  • README with example XML: README.md
  • Documentation: doc/ folder
  • Example app: example folder
  • 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

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 LICENSE for 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