cycfi/elements logo

cycfi/elements

Free

Elements C++ GUI library

FreeFree tier
Type
Open Source
Company
Cycfi Research

About cycfi/elements

Elements is a lightweight, fine-grained, resolution-independent, and modular C++20 GUI library. It provides a declarative interface using a Domain Specific Embedded Language (DSEL) syntax for constructing GUI elements directly in C++ without external editors. The library is embeddable, designed to coexist with other GUI frameworks and plugin hosts such as VST and AU. It does not own the event loop, making it suitable for plugin development. Released under the MIT License, Elements is still in active development and not yet production ready, but already usable. The project is led by Joel de Guzman, principal architect at Cycfi Research and author of Boost.Spirit, Boost.Phoenix, and Boost.Fusion.

Key Features

Lightweight and fine-grained GUI library
Resolution-independent rendering
Extremely modular architecture
Declarative interface with C++ DSEL syntax
Embeddable: can coexist with other GUI frameworks and plugin hosts (VST, AU)
Does not own the event loop
Written in modern C++20
Distributed under MIT License

Pros & Cons

Pros
  • Lightweight and efficient performance
  • Resolution-independent and scalable UI
  • Highly modular and composable components
  • Declarative syntax reduces boilerplate
  • Can be embedded into any application without event loop conflicts
  • Modern C++20 standards and features
  • Liberal MIT license allows unrestricted use
Cons
  • Not yet production ready; API still in flux
  • Documentation is a work in progress
  • Limited backend support (Cairo currently, Skia in development)
  • Requires knowledge of modern C++20

Best For

Building custom GUI applications in C++Creating audio plugin GUIs (VST, AU)Embedding UI components into existing applicationsPrototyping and experimenting with GUI design

FAQ

Is Elements production ready?
No, Elements is still under active development and not yet considered production ready. The API and code are undergoing continuous changes. However, it is already in a usable form.
What license does Elements use?
Elements is distributed under the liberal and non-viral MIT License.
Can Elements be used for plugin development?
Yes, Elements is embeddable and does not own the event loop, making it suitable for creating plugins such as VST and AU.
Who created Elements?
Elements is created by Joel de Guzman, principal architect and engineer at Cycfi Research, also known for Boost.Spirit, Boost.Phoenix, and Boost.Fusion.
What programming language is Elements written in?
Elements is written using modern C++20 language features.