A lightweight, modular, and embeddable C++20 GUI library with a declarative DSEL interface for building resolution-independent interfaces.
Elements is a C++ GUI library that provides a declarative, resolution-independent interface for building lightweight and modular user interfaces. It solves the problem of creating embeddable, fine-grained GUIs without relying on external tools or code generators, using a Domain Specific Embedded Language (DSEL) syntax written entirely in C++. The library is designed to integrate seamlessly into existing applications, including audio plugins like VST and AU.
C++ developers building desktop applications, audio plugins, or embedded systems who need a lightweight, modular GUI library that can coexist with other frameworks. It is particularly suited for audio software developers creating VST or AU plugins.
Developers choose Elements for its embeddable design, declarative C++-based GUI construction, and resolution independence, offering a flexible alternative to heavier GUI frameworks without sacrificing modularity or integration capabilities.
Elements C++ GUI library
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Uses a Domain Specific Embedded Language (DSEL) syntax to build GUIs entirely in C++ without external tools or code generators, as emphasized in the key features for a streamlined workflow.
Supports fine-grained, scalable interfaces that adapt to different screen resolutions and densities, making it ideal for high-DPI displays and modern devices.
Can be embedded in other applications and coexists with GUI libraries, specifically targeting plugin development like VST and AU, as highlighted in the philosophy for seamless integration.
Does not own the event loop, allowing easy integration with existing application frameworks without imposing rigid structures, which is key for plugin hosts.
The library is not yet production-ready, with continuous API changes as it approaches version 1.0, posing risks for long-term project stability, as noted in the status section.
Documentation is described as 'work in progress', which can slow down development and increase the learning curve for new users.
Primarily aimed at audio plugins and embeddable GUIs, so it lacks the broader widget sets, themes, and community resources of general-purpose frameworks like Qt or wxWidgets.