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

[Note]

Note

Development versions of BLFS may not build or run some packages properly if dependencies have been updated since the most recent stable versions of the book.

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.36, KDE Frameworks-5.101.0, kuserfeedback-1.2.0, libpwquality-1.4.5, libqalculate-4.5.1, libxkbcommon-1.5.0, Mesa-22.3.5 built with Wayland-1.21.0, NetworkManager-1.42.0, pipewire-0.3.65, PulseAudio-16.1, qca-2.3.5, sassc-3.6.2, taglib-1.13, and xcb-util-cursor-0.1.4

Recommended

Recommended (runtime)

Optional

GLU-9.0.2, ibus-1.5.27, qtwebengine-5.15.12, Xorg Synaptics Driver-1.9.2, 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.12: 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.26.4/
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.26.4.md5 << "EOF"
a01dbbcce3ba3940153316d1c37d4744  kdecoration-5.26.4.tar.xz
d1e815e30f077922fbcad8a5ae4ae551  libkscreen-5.26.4.tar.xz
7723718f4ae45ef8d7afb6f698754500  libksysguard-5.26.4.tar.xz
a9a1aa3091af394ea4f0da49cf71fa55  breeze-5.26.4.tar.xz
6d3af0af59e7570c195e16326eb78a95  breeze-gtk-5.26.4.tar.xz
625e99eab5af4ec21336f748e67b67b7  layer-shell-qt-5.26.4.tar.xz
a8162421975df33c2a28f679b03b03aa  kscreenlocker-5.26.4.tar.xz
c7d87706957fdcad8967348a718cc1c9  oxygen-5.26.4.tar.xz
3dbf318d057cd9a012d2a37a3d45c3d5  kinfocenter-5.26.4.tar.xz
a2f23971599845b291c12c2701d7aa4e  kwin-5.26.4.tar.xz
39302f811e359033e664a6461b6fdbe4  plasma-workspace-5.26.4.1.tar.xz
3f1e7dfe3bfb45bab458c3867d92cd9f  plasma-disks-5.26.4.tar.xz
d9fb627fc4272e7753af952b522d4416  bluedevil-5.26.4.tar.xz
54e61050bbadae9d40321843834660e8  kde-gtk-config-5.26.4.tar.xz
52d5f2ed12284c8f31c6e6c7c1a18271  khotkeys-5.26.4.tar.xz
0d8060c1680c91a85129732a25f67623  kmenuedit-5.26.4.tar.xz
68bea6c5219ed6b83eb588b4f09254f6  kscreen-5.26.4.tar.xz
325ecd912133aec98d72cbb9371b5e9b  kwallet-pam-5.26.4.tar.xz
72255cb11155888a1f02dbc44346faf6  kwayland-integration-5.26.4.tar.xz
b6ba8694011f3f764ff3a4a2de27c446  kwrited-5.26.4.tar.xz
ba3f3b6cc47ae3092f4e70742300d181  milou-5.26.4.tar.xz
9b0fa4a7b7285c0eaaecc8f2cf4991b5  plasma-nm-5.26.4.tar.xz
9b83ac853e5851eb01918ae66e4bc238  plasma-pa-5.26.4.tar.xz
f4386c8910593425386b4d53f495a590  plasma-workspace-wallpapers-5.26.4.tar.xz
ca6f21554bc89320ad04d19fc56b749b  polkit-kde-agent-1-5.26.4.tar.xz
cc2dbf3bd907d7a347b53420f51b73c6  powerdevil-5.26.4.tar.xz
a7480b2f3dcb241597f881b820cea82f  plasma-desktop-5.26.4.tar.xz
c381c5cd5bbcfcf7f5b5012862e575c5  kgamma5-5.26.4.tar.xz
a0a20325af1c3a9690228f0da5d22efb  ksshaskpass-5.26.4.tar.xz
#90a1d60dfcae3b683246e3b04ccf3b36  plasma-sdk-5.26.4.tar.xz
1ab9b3119be9f170c82d28f83652d139  sddm-kcm-5.26.4.tar.xz
42bdb4436c5e5f02f6a6893b43d57029  discover-5.26.4.tar.xz
#9bf877b70af210d2b40833d00c6baae8  breeze-grub-5.26.4.tar.xz
#7977cbb93436e0cb41ac7c043a79d14e  breeze-plymouth-5.26.4.tar.xz
d102a43c139a928d6ccb83a0b4fb2f61  kactivitymanagerd-5.26.4.tar.xz
d7999e1f9ca9b7da32387227f890e7ed  plasma-integration-5.26.4.tar.xz
64277d588a7b2ab1bf9295268fac4fce  plasma-tests-5.26.4.tar.xz
#8824f8fe6c6547ba053c77980db5fc19  plymouth-kcm-5.26.4.tar.xz
2ca28e5e76a04ced2a151ada42df421f  xdg-desktop-portal-kde-5.26.4.tar.xz
d7d81abab1f75c4f75286b7541e3c724  drkonqi-5.26.4.tar.xz
a5d6dcfbcacb34429e3125a4dc3d20fa  plasma-vault-5.26.4.tar.xz
c554a96073816fdadd5ce27c8cc290da  plasma-browser-integration-5.26.4.tar.xz
ef012068159708971289387b948bbb9f  kde-cli-tools-5.26.4.tar.xz
3abcf237a6ba20f1e2ec4f9462780932  systemsettings-5.26.4.tar.xz
d6406865e7e722f503d118d283a9cb13  plasma-thunderbolt-5.26.4.tar.xz
#e459caedeccd6bd7ce7ec01130b9ef96  plasma-nano-5.26.4.tar.xz
#710b5a5517a0856e991a45b0e33b5048  plasma-mobile-5.26.4.tar.xz
46363a107539755e2d6707a199860dc5  plasma-firewall-5.26.4.tar.xz
a7614d882e4ea34682fbba713434ee94  plasma-systemmonitor-5.26.4.tar.xz
3d3c6f2086318a9a5bc584161b1a09b7  qqc2-breeze-style-5.26.4.tar.xz
9c5c6ced9cffaab52bdeed33fc5d053f  ksystemstats-5.26.4.tar.xz
dc694109774211bc57efa9030838245f  oxygen-sounds-5.26.4.tar.xz
b924e1a5efa106aafa87a25e1a3775b9  aura-browser-5.26.4.tar.xz
5d6fd4a97a939df024509371daca9fa2  kdeplasma-addons-5.26.4.tar.xz
b3a40dc5c74a53889fd6b3204bf91124  kpipewire-5.26.4.tar.xz
6d235cd46a3f9ecd313e0d0cc66f194c  plank-player-5.26.4.tar.xz
7dd0e56273b92752c7d0a2fc49144058  plasma-bigscreen-5.26.4.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.12p2 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.26.4.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

Useless systemd units have been installed in $KF5_PREFIX/lib. Remove them now (as root):

rm -rf $KF5_PREFIX/lib/systemd

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.2, or from runlevel 5, using a Display Manager, such as lightdm-1.32.0.

To start Plasma 5 using xinit-1.4.2, 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.