Analysis updated 2026-07-03
Build the graphical controls (knobs, sliders, buttons) for a VST audio plugin in C++ without taking over the host's event loop.
Add a lightweight UI to an existing C++ application without replacing the existing framework.
Create resolution-independent desktop UI components that scale correctly on high-DPI displays.
Describe a full desktop app interface entirely in C++ code with no separate XML or markup files.
| cycfi/elements | kde/kdeconnect-kde | audiorouterdev/audio-router | |
|---|---|---|---|
| Stars | 3,687 | 3,688 | 3,685 |
| Language | C++ | C++ | C++ |
| Setup difficulty | moderate | moderate | easy |
| Complexity | 4/5 | 3/5 | 2/5 |
| Audience | developer | developer | general |
Figures from each repo's GitHub metadata at analysis time.
Requires CMake and either Cairo or Skia development libraries, API is still changing as the project has not reached v1.0.
Elements is a C++ library for building graphical user interfaces, meaning the windows, buttons, sliders, and other visual controls that make up a desktop application. It is written for developers who work in C++ and want to describe their interface directly in code rather than using a separate visual editor or markup file. The interface description language is built into C++ itself, so there is no separate configuration file format to learn. The library is designed to be lightweight and modular. It can be dropped into an existing application alongside other UI frameworks rather than taking over the whole program. This makes it suitable for building audio plugins in formats like VST or AU, where the plugin runs inside a host application that already controls the event loop. Elements does not need to own the event loop itself, which is what allows this kind of embedding. The library handles resolution independence, meaning interfaces built with it scale correctly across displays with different pixel densities without extra work from the developer. The rendering backend is currently Cairo-based, with a Skia-based alternative still in active development. Elements is not yet at version 1.0 and the README notes the API is still changing, so it is not considered production-ready. The author describes it as usable and welcomes bug reports and contributions. Documentation is partially available covering setup, layout, and design concepts, with more still in progress. A Discord server is available for questions and discussion. The project is created and maintained by Joel de Guzman, who also authored several well-known C++ libraries in the Boost collection. Elements is released under the MIT license.
Elements is a lightweight C++ library for building desktop app interfaces in pure C++ code, with no markup files needed, designed to embed easily into audio plugins and existing apps.
Mainly C++. The stack also includes C++, Cairo, Skia.
MIT, use freely for any purpose including commercial, just keep the copyright notice.
Setup difficulty is rated moderate, with roughly 1h+ to a first successful run.
Mainly developer.
This repo across BitVibe Labs
Verify against the repo before relying on details.