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-11.1 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

GTK+-2.24.33, GTK+-3.24.31, KDE Frameworks-5.91.0, libpwquality-1.4.4, libqalculate-4.0.0, libxkbcommon-1.4.0, Mesa-21.3.6 built with Wayland-1.20.0, NetworkManager-1.34.0, pipewire-0.3.47, PulseAudio-15.0, qca-2.3.4, sassc-3.6.2, taglib-1.12, and xcb-util-cursor-0.1.3

Recommended

Recommended (runtime)

Optional

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

[Note]

Note

Only two plasma packages optionally use qtwebengine-5.15.8: libksysguard and kdeplasma-addons. If QtWebEngine is installed later, only those two packages have to be rebuilt. This allows to provide a more complete display in the system monitor application.

User Notes: https://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=https://download.kde.org/stable/plasma/5.24.0/
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.24.0.md5 << "EOF"
d5a143b93d183e46d2d9eecb65ca32d6  kdecoration-5.24.0.tar.xz
25328009546df7703a45a51c27befc76  libkscreen-5.24.0.tar.xz
3869c4c0c3acc7fcb2a210aac6480249  libksysguard-5.24.0.tar.xz
3065e58dd9832b419e68b38921a97c24  breeze-5.24.0.tar.xz
6fad933f0ee6f852ae58d906444b9595  breeze-gtk-5.24.0.tar.xz
7eae43606459dd0a288d5c081d9a6a2a  layer-shell-qt-5.24.0.tar.xz
127f90c5e77d404949446813baf7d61a  kscreenlocker-5.24.0.tar.xz
626ae567af6b34bb3f8a0ffc18093e95  oxygen-5.24.0.tar.xz
f9a542276e05b3b4cb9fbd32c541a552  kinfocenter-5.24.0.tar.xz
cad3dc7c0b9ca2faa9f8d25b4b2d857d  kwayland-server-5.24.0.tar.xz
a401b80ab133740bb9c006cdf0eaedbf  kwin-5.24.0.tar.xz
56e20e9dd1767457613592c1edece60b  plasma-workspace-5.24.0.tar.xz
c8aa0ccd5cf5b428e16a25410f8ac33f  plasma-disks-5.24.0.tar.xz
6b7e9f27503c829924048bf65a0c4763  bluedevil-5.24.0.tar.xz
5dcd7cb3e9401942b1307ec65dcf7ea5  kde-gtk-config-5.24.0.tar.xz
5a289a97f76a416a9ac6a62dc8fe733a  khotkeys-5.24.0.tar.xz
a7485966e66b63f50eddbcbc4790832c  kmenuedit-5.24.0.tar.xz
507d12a9237fded95bbd1532e4a7b66b  kscreen-5.24.0.tar.xz
4c2f698253f260a955ed1867d1ec9007  kwallet-pam-5.24.0.tar.xz
1e5ff352ea3b039b112efe37677eff45  kwayland-integration-5.24.0.tar.xz
4f3d56f758541d046ad69e842fccac7b  kwrited-5.24.0.tar.xz
5e1d46d9bf8d0a03694903e83d070e3f  milou-5.24.0.tar.xz
b6e7be0be859d21947284e233d6e2931  plasma-nm-5.24.0.tar.xz
d99ceab1dd9986122690a4b24d50b114  plasma-pa-5.24.0.tar.xz
bad6e9079ac8ad192b8375242e5b1121  plasma-workspace-wallpapers-5.24.0.tar.xz
eacdd3ef241f27d7ae68abce49d47a45  polkit-kde-agent-1-5.24.0.tar.xz
8b1299077c31395e2f04b28d94d1ca06  powerdevil-5.24.0.tar.xz
8c07b6d13e9ed8965abb38f0c3bdfdbf  plasma-desktop-5.24.0.tar.xz
0f52913bec0b9ae5fe7c39b7eb7c0822  kdeplasma-addons-5.24.0.tar.xz
3dfd5a918fe12eaec8cf3fc291c69bfb  kgamma5-5.24.0.tar.xz
63bd9da2abdbffb38f7b89d4d1e6e52b  ksshaskpass-5.24.0.tar.xz
#e4353dc4d36d9ed54d25df4e2538ef04  plasma-sdk-5.24.0.tar.xz
9f4568cf9b1ace13f082bb38f45f0079  sddm-kcm-5.24.0.tar.xz
1759fb71e190f0fd506e98f68d1df938  discover-5.24.0.tar.xz
#89000e84cca76de236e576c922979352  breeze-grub-5.24.0.tar.xz
#5f34ae758eab4fc8343e2fad5b7afbfb  breeze-plymouth-5.24.0.tar.xz
f2485f5a857898ae47c256ae8d9b4893  kactivitymanagerd-5.24.0.tar.xz
050d04b18ce5f00fb7dfef31000d88b6  plasma-integration-5.24.0.tar.xz
1eab4ed3b88ef3a712223afc4c116a7d  plasma-tests-5.24.0.tar.xz
#8b19cc2d7929cf988a44606a3eba7644  plymouth-kcm-5.24.0.tar.xz
9aafa58faea1bd7f90776f6e63d3866a  xdg-desktop-portal-kde-5.24.0.tar.xz
fe87c0f534cbefe3955faecfe5fcfc4d  drkonqi-5.24.0.tar.xz
c6f224eb9eb6f87e0af1464d7a933d09  plasma-vault-5.24.0.tar.xz
d3c42b17d180af6ddf9821abd6f36d7e  plasma-browser-integration-5.24.0.tar.xz
a7157d0f6a12d2da890643b30bb02967  kde-cli-tools-5.24.0.tar.xz
3c7a50b0eb124cb6d1886cc89a0de5e8  systemsettings-5.24.0.tar.xz
e6346ea04baa5c25e706145777a193dc  plasma-thunderbolt-5.24.0.tar.xz
#e4daa179a4bce0f03f4988186dfe3e31  plasma-nano-5.24.0.tar.xz
#3e0e67f2a798b51025cb97a750fc1dea  plasma-phone-components-5.24.0.tar.xz
#3e0e67f2a798b51025cb97a750fc1dea  plasma-mobile-5.24.0.tar.xz
2c43882de9c657073aed4df2c01eeac4  plasma-firewall-5.24.0.tar.xz
886d89f75a6ba9324586154816a9bcef  plasma-systemmonitor-5.24.0.tar.xz
61903525c0e1585cb00e1b7c7c690145  qqc2-breeze-style-5.24.0.tar.xz
f1e7a6af9a0862cc8812426e4d040be6  ksystemstats-5.24.0.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. The plasma-nano package is used for embedded systems and plasma-phone-components provides phone functionality for Plasma.

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

       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.24.0.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 plasmawayland.desktop ]                               ||
as_root ln -sfv $KF5_PREFIX/share/wayland-sessions/plasmawayland.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 a TTY, using xinit-1.4.1.

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

cat > ~/.xinitrc << "EOF"
dbus-launch --exit-with-session $KF5_PREFIX/bin/startplasma-x11
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).

Contents

Installed Programs: There are too many plasma programs (63 in /opt/kf5/bin) to list separately here.
Installed Libraries: There are too many plasma libraries (40 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