Elements is a lightweight, fine-grained, resolution-independent C++ GUI library that uses modern C++20 language features and a declarative Domain Specific Embedded Language for constructing interfaces.
The library solves the problem of building graphical user interfaces in C++ without requiring external visual editors or code generators. Its approach uses a declarative syntax written entirely in C++, allowing developers to describe GUI layouts and components directly in code. The library is designed to be embeddable, meaning it can be integrated into existing applications and coexist with other GUI frameworks and plugin hosts such as VST and AU without owning the event loop.
Elements suits developers building audio plugins, music applications, or any software requiring a modular, resolution-independent interface that integrates with C++ codebases. It is particularly valuable for plugin development where the ability to embed within a host environment without controlling the event loop is essential. The tool's lightweight and modular design makes it appropriate for applications where fine-grained control over GUI components is needed. The README does not compare Elements to alternative GUI libraries.
The project remains in active development with the API and codebase undergoing continuous changes as it approaches a version 1.0 release. The maintainers acknowledge that while the library is already in a usable form, it is not yet production-ready and welcome bug reports and contributions to improve robustness. Documentation is described as work in progress. The project maintains a Discord channel for discussion and collaboration with developers.