Build interactive GUI applications with YAML instead of code.
Ymery lets you create Dear ImGui applications using declarative YAML files, powered by Dear ImGui Bundle for Python.
For the C++ based implementation (also WIP) see https://github.com/zokrezyl/ymery-cpp
An online demo available at https://zokrezyl.github.io/imery/demo/index.html
Traditional GUI development with ImGui requires writing repetitive boilerplate code. Every button, slider, or layout change means modifying and recompiling your application.
Ymery emerged from building an audio viewing and analysis tool with imgui-bundle. We discovered that live data observation and manipulation was a central pattern - UI components constantly consuming and updating data in real-time. This led us to separate concerns in an MVC-like direction: the UI as a tree structure consuming an equivalent data tree, similar to React's approach in the web world.
While most UI elements directly manipulate or observe data tree nodes, the framework also supports event generation and handling. We're also exploring a broader vision: an "Ymery browser" where you write interactive applications with Python and YAML instead of HTML and JavaScript.
These concepts are in early alpha. We'd love to hear your thoughts and suggestions.
For architectural details, see docs/design/main.md.
Ymery changes this:
- Declarative - Define your UI in YAML, not code
- Rapid iteration - Edit layouts without recompiling
- No programming required - Create simple UIs with just YAML
- Modular - Reusable widget definitions with imports
- Data-driven - Separate UI structure from application logic
Create a simple GUI in app.yaml:
app:
window_title: "Hello Ymery"
widget: builtin.text
data: greeting
data:
greeting:
metadata:
label: "Welcome to Ymery!"Run it:
ymery --main appThat's it. No Python code, no compilation - just a YAML file describing what you want.
- Python developers who prefer declarative approaches
- ImGui users frustrated with boilerplate code
- Data scientists needing quick interactive tools
- Game developers prototyping UI and tools
- Anyone who wants to experiment with ImGui without writing code
Both. Ymery provides structure and patterns (like a framework) but you can use it flexibly, picking what you need (like a library). Use it however it serves you best.
pip install ymeryRequires Python 3.12+
Check out the demo directory for examples:
demo/classic/- Classic ImGui demo widgetsdemo/hello-imgui/- Basic Hello ImGui examplesdemo/hello-imgui-full/- Full-featured application layout
Run any demo:
ymery --layouts-path demo/hello-imgui-full --main app- Ymery Lang Reference - YAML syntax and widget reference
- Design Overview - Architecture and design patterns
For more examples, explore the YAML files in the demo directories.
- Write YAML - Define your UI structure, widgets, and data
- Import modules - Compose UIs from reusable components
- Run - Ymery renders your YAML as a native ImGui application
- Iterate - Change the YAML and see updates immediately
We're in early development and actively seeking feedback:
- Try Ymery with your use cases
- Report issues and suggest features
- Share what works and what doesn't
Your input helps shape Ymery's direction.
[Add license information]
Built on top of:
- Dear ImGui by Omar Cornut
- Dear ImGui Bundle by Pascal Thomet
- HelloImGui by Pascal Thomet
