Building Plasma 5

KDE Plasma 5 is a collection of packages based on top of KDE Frameworks 5 and QML. It has been derived from the monolithic KDE 4 desktop. They implement the KDE Display Environment (Plasma 5).

This package is known to build and work properly using an LFS-7.10 platform.

The instructions below build all of the Plasma 5 packages in one step by using a bash script.

Package Information

Plasma 5 Dependencies


FontForge-20160404, GTK+-2.24.30, GTK+-3.20.9, KDE Frameworks-5.25.0, libpwquality-1.3.0, libxkbcommon-0.6.1, Mesa-12.0.1 built with Wayland-1.11.0, NetworkManager-1.4.0, PulseAudio-9.0, Python-2.7.12, qca-2.1.1 (built with qt5), taglib-1.11, and xcb-util-cursor-0.1.3



GLU-9.0.0, Xorg Synaptics Driver-1.8.3, appstream-qt, ibus, KDevPlatform, libgps, libhybris, libraw1394, mockcpp, packagekit-qt, Qalculate, Qapt, SCIM, and socat (for pam_kwallet)

User Notes:

Downloading KDE Plasma5

The easiest way to get the KDE Plasma5 packages is to use a single wget to fetch them all at once:

wget -r -nH --cut-dirs=3 -A '*.xz' -np $url

The options used here are:
  -r            recurse through child directories
  -nH           disable generation of host-prefixed directories
  --cut-dirs=3  remove three levels of directories when saving
  -A '*.xz'     just get the *.xz files
  -np           don't get parent directories

Setting Package Order

The order of building files is important due to internal dependencies. Create the list of files in the proper order as follows:

cat > plasma-5.7.3.md5 << "EOF"
bc2dd43ace2d8674f1d0468e1205474a  kde-cli-tools-5.7.3.tar.xz
d72584ff8363c903ea58b2d56cab965f  kdecoration-5.7.3.tar.xz
f40f3015e4c0cbadba893ea9aec37ec2  libkscreen-5.7.3.tar.xz
2c1234454ea8ca8f58de237600674959  libksysguard-5.7.3.tar.xz
1bb1a2462640daf062af923783709093  breeze-5.7.3.tar.xz
808ef73cc2c687d4d34552c5e98ec699  breeze-gtk-5.7.3.tar.xz
77df269b8566cf688b1945a9b53e3959  kscreenlocker-5.7.3.tar.xz
2842c0205ab580e4ac3dc61a8ab581be  oxygen-5.7.3.tar.xz
e9d2bdeadcbd378f12a2e54c6b3b9224  kinfocenter-5.7.3.tar.xz
99d46f170a9143883c207e0a8999e268  ksysguard-5.7.3.tar.xz
e1dd04fcaf1abd31df89d037af4d2258  kwin-5.7.3.tar.xz
2b5f4dbc85193941708509e51c171f14  systemsettings-5.7.3.tar.xz
5ed64282b5aa36bb77bd3a89334b851d  plasma-workspace-5.7.3.tar.xz
57c1e8aa62aa5791102e94160bb5e2b3  bluedevil-5.7.3.tar.xz
12c5bc74c567f65fbb11907909752ba2  kde-gtk-config-5.7.3.tar.xz
db39c52e7bdf1ec21888aae5f9f3113a  khotkeys-5.7.3.tar.xz
fa1edaf0339a013b0884a5ec774e132d  kmenuedit-5.7.3.tar.xz
369255dcf3f657595a4b2c0ec156d458  kscreen-5.7.3.tar.xz
607eb34cfafca62da92dbb596f999cae  kwallet-pam-5.7.3.tar.xz
4ec2115eec3883e560415c8448f910e1  kwayland-integration-5.7.3.tar.xz
35e622ea295b35c72e266d3e10b2022b  kwrited-5.7.3.tar.xz
c8c40727b9077d9692c2e67b85afaa7d  milou-5.7.3.tar.xz
1956f0eb29ce1e91f5fdf3ac8b72e40e  plasma-nm-5.7.3.tar.xz
2820e9cb6c54f01115013606dea7ef7b  plasma-pa-5.7.3.tar.xz
98f2f023cc30116f0e677e752fb6220c  plasma-workspace-wallpapers-5.7.3.tar.xz
b2fa225d57fcf8579322d58cf43a8759  polkit-kde-agent-1-5.7.3.tar.xz
4b93bfa172760c25c6a4e135b555fbe8  powerdevil-5.7.3.tar.xz
1b97771749effa32aee19ed789e67ddd  plasma-desktop-5.7.3.tar.xz
3083f945aebfc156ba0e8b64db4615b0  kdeplasma-addons-5.7.3.tar.xz
9f336c20cee1f1e5db98ca95eea7ccd5  kgamma5-5.7.3.tar.xz
8048a6ec5e69327691236d980a74b2a2  ksshaskpass-5.7.3.tar.xz
a92b968f0ebd5f35cb7483679a54520b  plasma-mediacenter-5.7.3.tar.xz
#e92b6d4c644591b16f700303eacd3ffe  plasma-sdk-5.7.3.tar.xz
e82aed1e04ae3e39fa91b7c16e4338e2  sddm-kcm-5.7.3.tar.xz
635eef411376423f8f746ae41bb90f1b  user-manager-5.7.3.tar.xz
9188f0f3a3c802ffd25f4c0dcb0abdba  discover-5.7.3.tar.xz
#b4a278e5af4cc4b804258a3aeb9d7ce2  breeze-grub-5.7.3.tar.xz
#d9fc477b250f0ae855a0e9bdb193b51a  breeze-plymouth-5.7.3.tar.xz
9ec5c70fd1e5fdc12bf35e1511948543  kactivitymanagerd-5.7.3.tar.xz
5f950d13d8715162ea4bdfec73e06b7d  plasma-integration-5.7.3.tar.xz


The breeze-grub and breeze-plymouth packages above are both for customized support of Plymouth which is designed to be run within an initial ram disk during boot (see the section called “About initramfs”). The plasma-sdk package is optional and used for software development.

Installation of Plasma5



When installing multiple packages in a script, the installation needs to be done as the root user. There are three general options that can be used to do this:

  1. Run the entire script as the root user (not recommended).

  2. Use the sudo command from the Sudo-1.8.17p1 package.

  3. Use su -c "command arguments" (quotes required) which will ask for the root password for every iteration of the loop.

One way to handle this situation is to create a short bash function that automatically selects the appropriate method. Once the command is set in the environment, it does not need to be set again.

  if   [ $EUID = 0 ];        then $*
  elif [ -x /usr/bin/sudo ]; then sudo $*
  else                            su -c \\"$*\\"

export -f as_root

First, start a subshell that will exit on error:

bash -e

Install all of the packages by running the following commands:

while read -r line; do

    # Get the file name, ignoring comments and blank lines
    if $(echo $line | grep -E -q '^ *$|^#' ); then continue; fi
    file=$(echo $line | cut -d" " -f2)

    pkg=$(echo $file|sed 's|^.*/||')          # Remove directory
    packagedir=$(echo $pkg|sed 's|\.tar.*||') # Package directory

    # Correct the name of the extracted directory
    case $packagedir in
      plasma-workspace- )

    tar -xf $file
    pushd $packagedir

       mkdir build
       cd    build

             -DCMAKE_BUILD_TYPE=Release         \
             -DLIB_INSTALL_DIR=lib              \
             -DBUILD_TESTING=OFF                \
             -Wno-dev ..  &&

        as_root make install

    as_root rm -rf $packagedir
    as_root /sbin/ldconfig

done < plasma-5.7.3.md5


cd $KF5_PREFIX/share/plasma/plasmoids

for j in $(find -name \*.js); do
  as_root ln -sfv ../code/$(basename $j) $(dirname $j)/../ui/

Command Explanations

ln -sfv ../code/$(basename $j) $(dirname $j)/../ui/: Create symbolic links so qml files can find needed javascript modules.

Starting Plasma5

You can start Plasma5 from a TTY, using xinit-1.3.4.

To start Plasma 5 using xinit-1.3.4, run the following commands:

cat > ~/.xinitrc << "EOF"
dbus-launch --exit-with-session $KF5_PREFIX/bin/startkde


The X session starts on the first unused virtual terminal, normally vt7. You can switch to another vtn simultaneously pressing the keys Ctrl-Alt-Fn (n=1, 2, ...). To switch back to the X session, normally started at vt7, use Ctrl-Alt-F7. The vt where the command startx was executed will display many messages, including X starting messages, applications automatically started with the session, and eventually, some warning and error messages. You may prefer to redirect those messages to a log file, which not only will keep the initial vt uncluttered, but can also be used for debugging purposes. This can be done starting X with:

startx &> ~/x-session-errors

When shutting down or rebooting, the shutdown messages appear on the vt where X was running. If you wish to see those messages, simultaneously press keys Alt-F7 (assuming that X was running on vt7).


Installed Programs: There are too many plasma programs (50 in /opt/kf5/bin) to list separately here.
Installed Libraries: There are too many plasma libraries (39 in /opt/kf5/lib) to list separately here.
Installed Directories: There are too many plasma directories (over 1000 in /opt/kf5) to list separately here.

Last updated on 2015-09-24 16:44:04 -0500