Building Plasma 5

KDE Plasma 5 is a collection of packages based on top of KDE Frameworks 5 and QML. They implement the KDE Display Environment (Plasma 5).

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

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

Package Information

Plasma 5 Dependencies

Required

GConf-3.2.6, GTK+-2.24.32, GTK+-3.24.13, KDE Frameworks-5.64.0, libpwquality-1.4.2, libxkbcommon-0.9.1, Mesa-19.2.7 built with Wayland-1.17.0, NetworkManager-1.20.8, pipewire-0.2.7, PulseAudio-13.0, qca-2.2.1, sassc-3.6.1, taglib-1.11.1, and xcb-util-cursor-0.1.3

Recommended

Optional

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

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/kf5

Downloading KDE Plasma5

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

url=http://download.kde.org/stable/plasma/5.17.3/
wget -r -nH -nd -A '*.xz' -np $url

The options used here are:
  -r            recurse through child directories
  -nH           disable generation of host-prefixed directories
  -nd           do not create a hierarchy of directories
  -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.17.3.md5 << "EOF"
57d33092638b1671546f5aa58f62939a  kdecoration-5.17.3.tar.xz
131d445c156a425e4fd16a2c6e16e8f2  libkscreen-5.17.3.tar.xz
8e287b24d6697ae7e75824ddaa0c2409  libksysguard-5.17.3.tar.xz
fde85cab245f8337767663430c4c48b0  breeze-5.17.3.tar.xz
d859abc935e4bae7c8556a7d0823c11c  breeze-gtk-5.17.3.tar.xz
f7201f181c9fa8080205a571efd1ae1a  kscreenlocker-5.17.3.tar.xz
ebb0a647b32cfc99db0fd41c418ee007  oxygen-5.17.3.tar.xz
41fb0b9800fee5710c401836b9ce5a04  kinfocenter-5.17.3.tar.xz
251ed74fff7b7bca46c4af973554bd1a  ksysguard-5.17.3.tar.xz
a32ce47f33af05ddd29d55be9b4fab7c  kwin-5.17.3.tar.xz
90a8576c6d95d0e6f74213df041f1df1  plasma-workspace-5.17.3.tar.xz
ccd075deae5d603a78479f2fe64a6811  bluedevil-5.17.3.tar.xz
937824ad2d27d49c31a6b302dbf016ba  kde-gtk-config-5.17.3.tar.xz
95027338f2c05183f3d4e51b5472dd6e  khotkeys-5.17.3.tar.xz
01004da1aad8cd6f927516ba320fcd49  kmenuedit-5.17.3.tar.xz
af1d6e15b12d2c6675037ea91650eb48  kscreen-5.17.3.tar.xz
61c93e0714314bc5c9b9313d68eb979c  kwallet-pam-5.17.3.tar.xz
f884e200e14299031f2948215cecf20d  kwayland-integration-5.17.3.tar.xz
fd7a1ebb83b4318fa6475782011d4066  kwrited-5.17.3.tar.xz
0a43963ab03fbac7472eb28dd897e627  milou-5.17.3.tar.xz
ad793139e22ecdfddb55897f7e1d9c59  plasma-nm-5.17.3.tar.xz
d97f0f8d87bf6113cc642b06ca254dfd  plasma-pa-5.17.3.tar.xz
b7e1a3b3bcc10156eadb66114827f2cb  plasma-workspace-wallpapers-5.17.3.tar.xz
9d8f7f5dd2ac879ebdda237208698210  polkit-kde-agent-1-5.17.3.tar.xz
9738628a1dc638abedcceb62f9ec18e4  powerdevil-5.17.3.tar.xz
bc459ace55e8700c83d4e41d9460965e  plasma-desktop-5.17.3.tar.xz
525de501b3f4f4bd3794229c31db56be  kdeplasma-addons-5.17.3.tar.xz
c967101a7f7fb0aa9a3326852a39be1f  kgamma5-5.17.3.tar.xz
6dde0208679753dfbae2ca32c14a03a7  ksshaskpass-5.17.3.tar.xz
#13194ee111514f7806eae32385e343c2  plasma-sdk-5.17.3.tar.xz
b8f0915909f52fffa0122d0500c3b577  sddm-kcm-5.17.3.tar.xz
4eade66f63f4cae1a6873543eebdca64  user-manager-5.17.3.tar.xz
eae7d894d0093610eadac232a7b2bf22  discover-5.17.3.tar.xz
#ab24a2b93148403f27ee2684d8a91bb7  breeze-grub-5.17.3.tar.xz
#7d99290a4168b0299b7ccd1ae450adca  breeze-plymouth-5.17.3.tar.xz
00b3dbeeb2002c5001cc80b0e23632ba  kactivitymanagerd-5.17.3.tar.xz
1268e0848969b20892e6e38d2299a774  plasma-integration-5.17.3.tar.xz
3ec80d38a08d86a417c0cedeab1309d3  plasma-tests-5.17.3.tar.xz
868c68f45337ae8a66a488d2f596cf01  plymouth-kcm-5.17.3.tar.xz
7a5bc2995863afd2fa3629edc3fbdc74  xdg-desktop-portal-kde-5.17.3.tar.xz
fb7add39aef8dbb15e4b4cfb6dccae20  drkonqi-5.17.3.tar.xz
03d4d20efeb96a2c2ec5e6b1d5e856e1  plasma-vault-5.17.3.tar.xz
10181267dba716be0b79e238f6e741ef  plasma-browser-integration-5.17.3.tar.xz
aa7f2afc78ddd303b550631c3fdcc907  kde-cli-tools-5.17.3.tar.xz
459b1c66617e441f5002cad71a5d5b77  systemsettings-5.17.3.tar.xz
d85c6f197c7f13557819b91bd20fa99f  plasma-thunderbolt-5.17.3.tar.xz
EOF
[Note]

Note

The breeze-grub, breeze-plymouth, and plymouth-kcm packages above are all 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

[Note]

Note

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.29 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.

as_root()
{
  if   [ $EUID = 0 ];        then $*
  elif [ -x /usr/bin/sudo ]; then sudo $*
  else                            su -c \\"$*\\"
  fi
}

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

    tar -xf $file
    pushd $packagedir

       # Fix some build issues when generating some configuration files
       case $name in
         plasma-workspace)
           sed -i '/set.HAVE_X11/a set(X11_FOUND 1)' CMakeLists.txt
         ;;
      
         khotkeys)
           sed -i '/X11Extras/a set(X11_FOUND 1)' CMakeLists.txt
         ;;
      
         plasma-desktop)
           sed -i '/X11.h)/i set(X11_FOUND 1)' CMakeLists.txt
         ;;
       esac

       mkdir build
       cd    build

       cmake -DCMAKE_INSTALL_PREFIX=$KF5_PREFIX \
             -DCMAKE_BUILD_TYPE=Release         \
             -DBUILD_TESTING=OFF                \
             -Wno-dev ..  &&

        make
        as_root make install
    popd


    as_root rm -rf $packagedir
    as_root /sbin/ldconfig

done < plasma-5.17.3.md5

exit

If you did not set $KF5_PREFIX to /usr, create symlinks to allow display managers to find Plasma:

as_root install -dvm 755 /usr/share/xsessions              &&
cd /usr/share/xsessions/                                   &&
[ -e plasma.desktop ]                                      ||
as_root ln -sfv $KF5_PREFIX/share/xsessions/plasma.desktop &&
as_root install -dvm 755 /usr/share/wayland-sessions       &&
cd /usr/share/wayland-sessions/                            &&
[ -e plasma.desktop ]                                      ||
as_root ln -sfv $KF5_PREFIX/share/wayland-sessions/plasma.desktop

Configuring Plasma

Linux PAM Configuration

If you built Plasma with the recommended Linux PAM support, create necessary configuration files by running the following commands as the root user:

cat > /etc/pam.d/kde << "EOF" 
# Begin /etc/pam.d/kde

auth     requisite      pam_nologin.so
auth     required       pam_env.so

auth     required       pam_succeed_if.so uid >= 1000 quiet
auth     include        system-auth

account  include        system-account
password include        system-password
session  include        system-session

# End /etc/pam.d/kde
EOF

cat > /etc/pam.d/kde-np << "EOF" 
# Begin /etc/pam.d/kde-np

auth     requisite      pam_nologin.so
auth     required       pam_env.so

auth     required       pam_succeed_if.so uid >= 1000 quiet
auth     required       pam_permit.so

account  include        system-account
password include        system-password
session  include        system-session

# End /etc/pam.d/kde-np
EOF

cat > /etc/pam.d/kscreensaver << "EOF"
# Begin /etc/pam.d/kscreensaver

auth    include system-auth
account include system-account

# End /etc/pam.d/kscreensaver
EOF

Starting Plasma5

You can start Plasma5 from runlevel 3, using xinit-1.4.1, or from runlevel 5, using a Display Manager, such as lightdm-1.30.0.

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

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

startx

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).

If you intend to start Plasma using a display manager such as lightdm-1.30.0, there will be two entries for Plasma, one for use with Xorg, and another for Wayland. Modify the Xorg entry with the following command, as the root user, so that you can differentiate between the two:

sed '/^Name=/s/Plasma/Plasma on Xorg/' -i /usr/share/xsessions/plasma.desktop

Contents

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