Warning, /plasma/kdecoration/README.md is written in an unsupported language. File is not indexed.
0001 # KDecoration2 0002 0003 Plugin based library to create window decorations. 0004 0005 ## Introduction 0006 0007 KDecoration2 is a library to create window decorations. These window decorations can be used by 0008 for example an X11 based window manager which re-parents a Client window to a window decoration 0009 frame. 0010 0011 The library consists of two parts: 0012 * Decoration API for implementing a Decoration theme 0013 * Private API to implement the backend part (e.g. from Window Manager side) 0014 0015 ## Providing a Decoration 0016 0017 To provide a custom decoration one needs to create a plugin and provide an own implementation 0018 of KDecoration2::Decoration. For a framework to load and find the plugin it needs to be compiled 0019 with the proper json metadata. An example for such metadata (deco.json): 0020 0021 ```json 0022 { 0023 "KPlugin": { 0024 "Id": "org.kde.myAweseomeDecoration", 0025 "ServiceTypes": [ 0026 "org.kde.kdecoration2" 0027 ] 0028 }, 0029 "X-KDE-ConfigModule": "kcm_name", /* comes with a configuration module */ 0030 "org.kde.kdecoration2": { 0031 "blur": false, /* blur behind not needed */ 0032 } 0033 } 0034 ``` 0035 0036 To simplify one can use the KPluginFactory macro from the KCoreAddons framework: 0037 0038 ```cpp 0039 K_PLUGIN_FACTORY_WITH_JSON( 0040 MyAwesomeDecorationFactory, 0041 "deco.json", 0042 registerPlugin<MyAwesomeDecoration::Decoration>(); 0043 ) 0044 ``` 0045 0046 The plugin needs to get installed to `${KDE_INSTALL_PLUGINDIR}/org.kde.kdecoration2`. 0047 0048 ## Configuring the Decoration 0049 0050 It is possible to provide a configuration module to tweak some aspects of the decoration. This is done 0051 by creating a plugin that provides such a configuration module. 0052 0053 The `kcmoduleName` specifies the name of the configuration module. It needs to be installed under 0054 `${KDE_INSTALL_PLUGINDIR}/org.kde.kdecoration2.kcm` so that it can be looked up.