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

GTK+-2.24.33, GTK+-3.24.31, KDE Frameworks-5.89.0, libpwquality-1.4.4, libxkbcommon-1.3.1, Mesa-21.3.4 built with Wayland-1.20.0, NetworkManager-1.34.0, pipewire-0.3.43, 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.23.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.23.4.md5 << "EOF"
70412d6cd8e0d1c4c42ed12902368a7f  kdecoration-5.23.4.tar.xz
e970cde02338a940dfac2a46834bb914  libkscreen-5.23.4.tar.xz
2b3db1a3157b42f17e7f9bfa5a94632f  libksysguard-5.23.4.tar.xz
4121a2c47a3a523fee891e82233dafaa  breeze-5.23.4.tar.xz
5c7c1d37cc2e8e4e77509e76c025bd8a  breeze-gtk-5.23.4.tar.xz
8a0ca463e975f36a4029c5b58e97d0c6  layer-shell-qt-5.23.4.tar.xz
9ba6af9d821819a12627228348be3a33  kscreenlocker-5.23.4.tar.xz
196a7591da5295467079154bbb555a0e  oxygen-5.23.4.tar.xz
98aba2934bc1a37a948b7e2cd5a8a5f5  kinfocenter-5.23.4.tar.xz
c3fb19662d5f9df6d08da17537de4a00  kwayland-server-5.23.4.tar.xz
7c4641bdb19b8ff3ebf785d9e62c4e73  kwin-5.23.4.tar.xz
b881d2067ab2b2081b1abe514df535d2  plasma-workspace-5.23.4.tar.xz
d792a0949023365b7cbe63063cac4d76  plasma-disks-5.23.4.tar.xz
129d38e7781b6b8de4228d5798a43cfb  bluedevil-5.23.4.tar.xz
8c9e78a04e7d810e07f3016f2506b294  kde-gtk-config-5.23.4.tar.xz
679e9b0049272f9dd09fd5aa196d4083  khotkeys-5.23.4.tar.xz
25f187342eccfea8400ee7473d00c776  kmenuedit-5.23.4.tar.xz
525d86e1f10e27a682419dd7fe50adc7  kscreen-5.23.4.tar.xz
b8dee5bf600004b67d499144e5b73aa4  kwallet-pam-5.23.4.tar.xz
ccadb3775b62e6c79ae876d36e112d2d  kwayland-integration-5.23.4.tar.xz
8d5500231378fce92b938e650b93af02  kwrited-5.23.4.tar.xz
c747fc88fe6321936d321145953c9113  milou-5.23.4.tar.xz
c8550fccbb1f4545b75d3d12ff3f2bd0  plasma-nm-5.23.4.tar.xz
f8eb962f3ddb735440161349ccb53b7d  plasma-pa-5.23.4.tar.xz
a8c49526c3166ab39c52d5c2698cac66  plasma-workspace-wallpapers-5.23.4.tar.xz
a4c54e6faa3539f87327fed2957d46e6  polkit-kde-agent-1-5.23.4.tar.xz
caebf6ab603fca247adfb04d96b276b1  powerdevil-5.23.4.tar.xz
4f53438f181525c1c64de34e8a2a7539  plasma-desktop-5.23.4.tar.xz
7050e2d550375e09c5713c7975439748  kdeplasma-addons-5.23.4.tar.xz
a142e8c4f2ca73e35384962d998a3b5c  kgamma5-5.23.4.tar.xz
daf8770fe5e265aad69534d64f3d9cea  ksshaskpass-5.23.4.tar.xz
#ad6f77ebdbc3396bbf08e61168669fa6  plasma-sdk-5.23.4.tar.xz
71a0156a31687357103f954fa78b6848  sddm-kcm-5.23.4.tar.xz
006e75263753756f8755bd059c19ab9e  discover-5.23.4.tar.xz
#9c8f0c048dc42677d74353bbfa2159a2  breeze-grub-5.23.4.tar.xz
#71c20d264f3e55a6b44d7bb999cb2392  breeze-plymouth-5.23.4.tar.xz
280b8796189bc7aab7176b11d544e847  kactivitymanagerd-5.23.4.tar.xz
ff59902f5d98c8b95e0233bbd51dc2c6  plasma-integration-5.23.4.tar.xz
75323ed6f25645cfc177b05851708aef  plasma-tests-5.23.4.tar.xz
#90f7253019ffeebea00e46c8d01825e3  plymouth-kcm-5.23.4.tar.xz
9834a8793b8ec9c9ba100088b156eda7  xdg-desktop-portal-kde-5.23.4.tar.xz
8a105673248c94dd7d67345e5015cfa1  drkonqi-5.23.4.tar.xz
f95e5d77072c1e63d868fcf31794f2a7  plasma-vault-5.23.4.tar.xz
159c8ef827875feee49ad2ab18a69a68  plasma-browser-integration-5.23.4.tar.xz
6100c39ded0b25058d8d9c58a06dd88f  kde-cli-tools-5.23.4.tar.xz
da45f029de7d611f1f2ce68d944b9c97  systemsettings-5.23.4.tar.xz
d13e77f6cfd50f710f155cec76fd4096  plasma-thunderbolt-5.23.4.tar.xz
#26080aa1ce99de8ec0e8e170713a0bdb  plasma-nano-5.23.4.tar.xz
#6977fd972f03934aa40f6dceead0268a  plasma-phone-components-5.23.4.tar.xz
8287067abceafacc586bdea72917f63a  plasma-firewall-5.23.4.tar.xz
287dc2d4ba0501335460db00e40151be  plasma-systemmonitor-5.23.4.tar.xz
43eb9791a41bab99ba7a69a95740a53c  qqc2-breeze-style-5.23.4.tar.xz
77f7b33c69d7638d1109757feab51e74  ksystemstats-5.23.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.8p2 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.23.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.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/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 Tue Dec 14 13:11:09 2021