Building Plasma 5

KDE Plasma 5 is a collection of packages based on top of KDE Frameworks 5 and QML. It has been derived from the monolithic KDE 4 desktop. They implement the KDE Display Environment (Plasma 5).

This package is known to build and work properly using an LFS-8.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

GConf-3.2.6, GTK+-2.24.31, GTK+-3.22.26, KDE Frameworks-5.41.0, libpwquality-1.4.0, libxkbcommon-0.7.2, Mesa-17.2.7 built with Wayland-1.14.0, NetworkManager-1.10.0, PulseAudio-11.1, Python-2.7.14, qca-2.1.3 (built with qt5), taglib-1.11.1, and xcb-util-cursor-0.1.3

Recommended

Optional

GLU-9.0.0, IBus-1.5.17, Xorg Synaptics Driver-1.9.0, 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.10.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.10.5.md5 << "EOF"
61b926818863e0ff1e87b9a7f4bc1371  kde-cli-tools-5.10.5.tar.xz
133cfcf1c2f3f98f60036a0fb4cd2c84  kdecoration-5.10.5.tar.xz
93465b802514e1a3d90ae3b79f7a7f85  libkscreen-5.10.5.tar.xz
8352206006bd8df100ccf4457330c91f  libksysguard-5.10.5.tar.xz
f78318b14525ed3a56e33f4f24e5cd04  breeze-5.10.5.tar.xz
02be5bb69c94ac18097375ae66384092  breeze-gtk-5.10.5.tar.xz
90c04db347b282202a06a41e33f28083  kscreenlocker-5.10.5.tar.xz
9874a761b9e92a88e6b4abba571c9f61  oxygen-5.10.5.tar.xz
60e424cdcc01adc499902229c3a8ee80  kinfocenter-5.10.5.tar.xz
3e531a86dbc0f517e79bbba83c8bba5b  ksysguard-5.10.5.tar.xz
5e8ad3d570909cd2910fbb1fe50650db  kwin-5.10.5.tar.xz
91d3559768edb8d805897f09bb9ca0ed  systemsettings-5.10.5.tar.xz
7332e40293623cc59a5d296afb0cac50  plasma-workspace-5.10.5.tar.xz
9d55bed36f274f1b79427e0e515441b1  bluedevil-5.10.5.tar.xz
f4f21444ee52f793c43bd1245880c408  kde-gtk-config-5.10.5.tar.xz
b96fa0308bf5242924e608181b48d777  khotkeys-5.10.5.tar.xz
c2259c358887d8e21b497e90a8dcef50  kmenuedit-5.10.5.tar.xz
29a7eac44b1239a371d2f8337285cfa9  kscreen-5.10.5.tar.xz
4117c95c592c7f51c6f1e54b9eb9a015  kwallet-pam-5.10.5.tar.xz
37720b8eaf3e6271dc21b8cd7fda14d2  kwayland-integration-5.10.5.tar.xz
0377a56033de0415174400dfe8e7516a  kwrited-5.10.5.tar.xz
b925292bb0300bea67e60e39bbffddf5  milou-5.10.5.tar.xz
4ab4a1840448808ec998cbcfefdf6ac0  plasma-nm-5.10.5.tar.xz
cf32842a5a80fcf875231548db222c73  plasma-pa-5.10.5.tar.xz
e477f6554f7a266e52521ff98cc7b798  plasma-workspace-wallpapers-5.10.5.tar.xz
eb76e3c900a3288792eb36524394ace8  polkit-kde-agent-1-5.10.5.tar.xz
cf9600ad417ac19a2905f313d2a4b63c  powerdevil-5.10.5.tar.xz
07df99ee595a53c6d9f50c17ddb7bcb4  plasma-desktop-5.10.5.tar.xz
5f69006dbd233aefa54b1f2f474ba0ec  kdeplasma-addons-5.10.5.tar.xz
73bf718d8625bcd7990200854846f330  kgamma5-5.10.5.tar.xz
3013943358a15d878ffcd6cc0529ee8c  ksshaskpass-5.10.5.tar.xz
#2108f6f1856edbb845303faffa0663ec  plasma-sdk-5.10.5.tar.xz
99243c64866c23c03251fbe179ac4f4b  sddm-kcm-5.10.5.tar.xz
e05c789e6f6e21d642c4194480ca1b8c  user-manager-5.10.5.tar.xz
da06f5c055b78c773b8acd813cb22682  discover-5.10.5.tar.xz
#c3463607251ff3fdcd73cc5eb0ab203c  breeze-grub-5.10.5.tar.xz
#f2e14a9075792c3e3a6df512490429b4  breeze-plymouth-5.10.5.tar.xz
ac13d5b70b28c77d3a37d22cd4b949d5  kactivitymanagerd-5.10.5.tar.xz
74e1cf72ec6c4ad920447b4cc7635c08  plasma-integration-5.10.5.tar.xz
c03584b89c09b0d154bdb93290c11b81  plasma-tests-5.10.5.tar.xz
#479e80625971fedb4bef3101060c91cf  plymouth-kcm-5.10.5.tar.xz
3ec1936fa9def125630493418455b6d8  xdg-desktop-portal-kde-5.10.5.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.21p2 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.10.5.md5

exit

cd $KF5_PREFIX/share/plasma/plasmoids

for j in $(find -name \*.js); do
  as_root ln -sfv ../code/$(basename $j) $(dirname $j)/../ui/
done

Command Explanations

ln -sfv ../code/$(basename $j) $(dirname $j)/../ui/: Create symbolic links so qml files can find needed javascript modules.

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.3.4, or from runlevel 5, using a Display Manager, such as sddm-0.16.0.

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

cat > ~/.xinitrc << "EOF"
ck-launch-session 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
[Note]

Note

You may wish to drop consolekit and/or dbus-launch, e.g., just using startkde in ~/.xinitrc. However some capabilities such as mounting or umounting file systems from a file manager will not be possible, or the reboot option may be absent or inoperative, among other problems.

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