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 LFS or dependencies have been updated since the most recent stable versions of the books.

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.38, KDE Frameworks-5.106.0, kuserfeedback-1.2.0, libpwquality-1.4.5, libqalculate-4.7.0, libxkbcommon-1.5.0, Mesa-23.1.3 built with Wayland-1.22.0, NetworkManager-1.42.8, pipewire-0.3.74, PulseAudio-16.1, qca-2.3.6, sassc-3.6.2, taglib-1.13.1, and xcb-util-cursor-0.1.4

Recommended

Recommended (runtime)

Optional

GLU-9.0.2, ibus-1.5.28, qtwebengine-5.15.14, 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

qtwebengine-5.15.14 is required for aura-browser. It is also optional for two other packages: libksysguard and kdeplasma-addons. If QtWebEngine is installed later, only these two packages need to be rebuilt. This allows a more complete display in the system monitor application.

Editor 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.27.5/
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.27.5.md5 << "EOF"
51e9302eb0654fae37d3962626ff4fbb  kdecoration-5.27.5.tar.xz
74bde56139ac985dcbdc2367a70b9bca  libkscreen-5.27.5.tar.xz
b7247c962c5d25adab4319b61658a084  libksysguard-5.27.5.tar.xz
82968d40f62140cee86aea36a906bd83  breeze-5.27.5.tar.xz
aeaa28b4191c882cc18fc4e411e8a2e4  breeze-gtk-5.27.5.tar.xz
af0607ef8312a85428229118b62c88fe  layer-shell-qt-5.27.5.tar.xz
4694667b6f766583b4c82a080a927604  kscreenlocker-5.27.5.tar.xz
06d8187c1365ea93a6b6c944e357e6c0  oxygen-5.27.5.tar.xz
2dbc2bb816a2e20d09f969ad3a939845  kinfocenter-5.27.5.tar.xz
9dcdcf269faee1e5370840f6e8b7eb7f  kwin-5.27.5.tar.xz
6d8eebad15cca79e694360ffddb06ac0  plasma-workspace-5.27.5.tar.xz
c35e7d44a3d183c870a5a867ea87703f  plasma-disks-5.27.5.tar.xz
ff679b3b315c98baeae249a09c060a86  bluedevil-5.27.5.tar.xz
400c30c063f2c4c6e1b1f876c25e3772  kde-gtk-config-5.27.5.tar.xz
bde2e79070e499d26586a480e9ee36a5  khotkeys-5.27.5.tar.xz
8b0a697df18d02c7eb33b6378cbd4d45  kmenuedit-5.27.5.tar.xz
d2c3d8dcd306b426a3c6ff1eed6c1133  kscreen-5.27.5.tar.xz
a73ad8b4251c5661f6f19eb1d74ba1bf  kwallet-pam-5.27.5.tar.xz
f409d7176b62b0c7c1fd6bae483f727c  kwayland-integration-5.27.5.tar.xz
41e446151576173a39ae8129d2eccac2  kwrited-5.27.5.tar.xz
219d1e6af7aba7333af2b3016ae4c548  milou-5.27.5.tar.xz
03de7063c72469e7ee0f152db471f84a  plasma-nm-5.27.5.tar.xz
612efae7cd722f5f1e3896c3bf3fb161  plasma-pa-5.27.5.tar.xz
50fa6015315c82976426760552d46d7f  plasma-workspace-wallpapers-5.27.5.tar.xz
058a604c6ea8e0ae64f5878a7e5944b8  polkit-kde-agent-1-5.27.5.tar.xz
672a9b07e3725c26318edbab4b9e128e  powerdevil-5.27.5.tar.xz
6d10296d88754fae5c246aa73c3f9059  plasma-desktop-5.27.5.tar.xz
5b69ac7f3f160640aee2fe2fb1c6d024  kgamma5-5.27.5.tar.xz
b6c9189955d602662672298c50758b0e  ksshaskpass-5.27.5.tar.xz
#a46c94604166a9a2feb748ee8c82e86d  plasma-sdk-5.27.5.tar.xz
9fbd2a51814d3ca86371df990643f93a  sddm-kcm-5.27.5.tar.xz
#3f192d5ae11e72dedee2686ca1fd5133  discover-5.27.5.tar.xz
#7fdd06cfba4d5e33cfc332be0235635e  breeze-grub-5.27.5.tar.xz
#f4d52827d548f61957fa81e232a9413a  breeze-plymouth-5.27.5.tar.xz
cad575c607ef907af5138fee59a0c5b7  kactivitymanagerd-5.27.5.tar.xz
6b748c004da6d5b3528c08a93bf1a0f7  plasma-integration-5.27.5.tar.xz
#59b6d2dd34435697fe18e564ed78a511  plymouth-kcm-5.27.5.tar.xz
cda052cd8e5e93079b90ecd32878e8c2  xdg-desktop-portal-kde-5.27.5.tar.xz
df38490abd84e1dab33bb0a71749ddef  drkonqi-5.27.5.tar.xz
e7480e7771f736742b9ac60cd9bc1cc5  plasma-vault-5.27.5.tar.xz
c2f27e9822a4e7ccf973d75a0a3883f5  plasma-browser-integration-5.27.5.tar.xz
73ba745f7b31dd74c5ac60b3fe311f59  kde-cli-tools-5.27.5.1.tar.xz
c598c2329e43a3bb6a2da6c555341272  systemsettings-5.27.5.tar.xz
091b75af67a85285ec321f7fa4ebe25a  plasma-thunderbolt-5.27.5.tar.xz
#1b35ba803eb94218d6f91a6a285259ef  plasma-nano-5.27.5.tar.xz
#4d24bc44142da6aee054b5ba0ceda8de  plasma-mobile-5.27.5.tar.xz
909a2118673360130dca8b2b104c988b  plasma-firewall-5.27.5.tar.xz
aec129bb64448e92d8abcdee54e7c29a  plasma-systemmonitor-5.27.5.tar.xz
6bc2603e9b50728639a0274ed108ebf1  qqc2-breeze-style-5.27.5.tar.xz
453d047ecb4b0de02babe74b435110a1  ksystemstats-5.27.5.tar.xz
50d577a781cf009b6d56766cd9ce801e  oxygen-sounds-5.27.5.tar.xz
#98ad50d4bd635c28b33e498855ac5125  aura-browser-5.27.5.tar.xz
ef10140df619daa2b82b22f77e07a4c9  kdeplasma-addons-5.27.5.tar.xz
6ffe6e00493ade07b452ab9d30385d77  kpipewire-5.27.5.tar.xz
a185c7f09b9b81683e85d884f9be1e1e  plank-player-5.27.5.tar.xz
d520bce789eae5a0d9ba9432de5d76ac  plasma-bigscreen-5.27.5.tar.xz
a1d5c114997f50bc6a6e1c40cc63009c  plasma-remotecontrollers-5.27.5.tar.xz
#f96194446cb04af657dc4abc1634d7af  flatpak-kcm-5.27.5.tar.xz
#47263a34137f46e168332de80c46a168  plasma-welcome-5.27.5.tar.xz
EOF
[Note]

About Commented out Packages

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-mobile provides phone functionality for Plasma. The aura-browser package requires qtwebengine-5.15.14. The discover package requires the external package appstream-qt. The plasma-welcome package requires the external package kaccounts-integration. The flatpack-kcm package is for managing support of flatpack applications.

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.14p2 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.27.5.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-x11 $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.