This tutorial teaches you how you can load Active settings modules into your app, and create your own modules.


Active Settings is an app, much like Plasma Desktop's kcmshell that shows and loads configuration modules. These configuration modules are plugins providing a QML package and an optional C++-plugin which exports custom-written configuration objects as QObject to the declarative environment.

You can query available modules using the --list argument to active-settings:

$ active-settings --list             Settings for history, caching, etc.      Test Module for the Config Bindings            Settings for timezone and date display

You can load an individual module by supplying its plugin name as argument to active-settings:


will open the active-settings app and load the "Time and Date" module on startup.


The Active Settings app consists of a number of parts, an Active App, which loads a QML package providing the chrome for active-settings, a set of Declarative components which encapsulate loading settings modules and a set of settings modules, which provide the UI and backend code for a specific settings domain (i.e. Time and Date, Browser settings, etc.).

Integrating a Settings Module into an App

In order to integrate a settings module "inline" into your app, you can use the SettingsItem component, which comes with the ActiveSettings declarative plugin. SettingsItem provides a PageStack (from PlasmaComponents) with a bit of additional API, the module property. Creating an Item with a settings module is as easy as:

import 0.1 as ActiveSettings
ActiveSettings.SettingsItem {
    id: webSettingsItem
    module: ""
    anchors { ... }

In order to speed up loading your app, you will want to lazy-load the settings module. This is very easy by using the PageStack features that SettingsItem encapsulates:

import 0.1 as ActiveSettings
ActiveSettings.SettingsItem {
    id: settingsItem
    initialPage: someOtherItem
    anchors { [...] }

PlasmaComponents.Button {
    // This button toggles the settings item and someOtherPage
    onClicked: {
        if (settingsItem.module != "") {
            settingsItem.module = ""
        } else {
            // Switching back...

Item {
    id: someOtherItem
    /* this guy is shown before any module is loaded */

Creating Your Own Settings Module

Simple, QML-only Module

Extending your Settings Module with with C++

Content is available under Creative Commons License SA 4.0 unless otherwise noted.