The use of QML as a verbose configuration language throughout Hemera

Configurations in Hemera are usually represented as QML files. This includes, for example, both the configuration of applications and Gravity.

QML is a declarative language part of Qt. Documentation for QML can be found at PLACEURLHERE. Hemera uses QML in its simplest form: a JSON-like language with a property as a key and a javascript expression as a value (although, most of the times, in Hemera value is a static expression such as a string).

This allows to have type-safe documentation, as every QML file is precompiled - so there is no risk of misconfiguring anything due to a syntax error or a typo. Also, it provides a convenient and consistent syntax throughout the whole system. Last but not least, being QML a binding to QObject, this provides Hemera's configuration objects with inheritance and more, making configuration a lot easier and more consistent.

Hemera provides a set of configuration plugins under the namespace com.ispirata.Hemera.Settings. Various bits of the SDK place their own configuration sets under subdomains of the same namespace, such as com.ispirata.Hemera.Settings.Web.

QML, though, is rarely interpreted at runtime. Most of Hemera systems precompile QML into static files so that the declarative engine does not need to be loaded at all. Hence, if you wish to place javascript logic which requires a stateful Qml environment, be sure to check whether such a thing is supported in the component you're trying to configure.

You can check documentation for QML objects in the Hemera QML Settings Module.