# KDE package guidelines

The KDE packages on Arch Linux follow a certain schema.

## Build directory

A good way of building CMake packages is to make a build directory outside the root of the project and run cmake from that directory. The PKGBUILD should look this way:

    prepare() {
      mkdir -p build
    }

    build() {
      cd build
      cmake ../${pkgname}-${pkgver}
    }

## Install prefix

Every packages must set the `CMAKE_INSTALL_PREFIX` variable, but also we have to respect custom built versions of KDE, so please use:

    -DCMAKE_INSTALL_PREFIX=$(kde4-config --prefix)

When a package is moved to [extra] or [community] that line must be changed to:

    -DCMAKE_INSTALL_PREFIX=/usr

## Build type

Please specify the build type; this makes it really simple to rebuild a package with debug symbols by just using a sed rule.

    -DCMAKE_BUILD_TYPE=Release

## Force Qt4

### KDE4

On systems where both qt4 and qt5-base are installed, `qmake` refers to the 5.x version, so force cmake to use Qt4 this way:

     export QT_SELECT=4

or using this option in cmake:

    -DQT_QMAKE_EXECUTABLE=/usr/bin/qmake-qt4

### KF5

The same rules as for KDE4, but you need force cmake to use Qt5 instead of Qt4:

     export QT_SELECT=5

## KDE4 package naming

### KDE Config Module

KDE Config Module packages should be named `kcm-module`.

### Plasma widgets

Plasma widgets (formerly Plasmoids) packages should be named `kdeplasma-applets-widgetname` so that they are recognizable as KDE-related packages; this also distinguishes them from the official packages.

### Runners

Plasma runners packages should be named `kdeplasma-runners-runnername` so that they are recognizable as KDE-related packages; this also distinguishes them from the official packages.

### Service menus

Service menus packages should be named `kde-servicemenus-servicename` so that they are recognizable as KDE-related packages

### Themes

Plasma themes packages should be named `kdeplasma-themes-themename` so that they are recognizable as KDE-related packages.

## KF5 package naming

### Plasma widgets

Plasma widgets (formerly Plasmoids) packages should be named `plasma5-applets-widgetname` so that they are recognizable as Plasma 5-related packages; this also distinguishes them from the official packages.

### Runners

Plasma runners packages should be named `plasma5-runners-runnername` so that they are recognizable as Plasma 5-related packages; this also distinguishes them from the official packages.

### Service menus

Service menus packages should be named `kf5-servicemenus-servicename` so that they are recognizable as KF5-related packages

### Themes

Plasma themes packages should be named `plasma5-themes-themename` so that they are recognizable as Plasma 5-related packages.

## .install files

For many KDE packages, all `.install` files look almost exactly the same. Some packages install icons in the hicolor icon theme; use the `xdg-icon-resource` utility provided by the xdg-utils package, which is a dependency of the qt4 package. So use this line:

    xdg-icon-resource forceupdate --theme hicolor &> /dev/null

Many packages install Freedesktop.org compatible `.desktop` files and register MimeType entries in them. Running `update-desktop-database` in `post_install` is recommended as that tool is provided by the desktop-file-utils package which is a dependency of the qt4 package. So use this line:

    update-desktop-database -q

Category:

- Package development