wiki / desktops / kde Edit this page
Edited (8a55f77) at 2021-07-02 by Dilyn Corner
KDE
________________________________________________________________________________
KDE [0] is desktop environment which consists of the Plasma Desktop, the KDE
Frameworks, and a collection of free and open source, cross-platform programs.
The project makes integral use of the Qt framework [1] to help provide a
uniform experience for users between all of the software a user will install.
$/dilyn-corner/KISS-kde is still considered to be under heavy development. While
the desktop environment works quite well, many things have yet to be tested. If
you run into bugs, problems, or have suggestions, submit issues or pull requests
on the GitHub page!
NOTE: due to the KISS Guidestones [2], the $/dilyn-corner/KISS-kde project is
entirely community maintained. It will always remain separate from the core KISS
project, including the community repository. Specifically, KDE violates the
software inclusion guidestone. The required violations are dbus and wayland.
However, logind, polkit, and PAM are optional to build and use KDE.
Index
________________________________________________________________________________
- Getting Started [0.0]
- Authentication [0.1]
- Session Management [0.2]
- Default Window Manager [0.3]
- From Scratch [1.0]
- Prerequisites [1.1]
- Installing [1.2]
- Launching [1.3]
- The KISS-kde tarball [2.0]
- Starting KDE [3.0]
- Console [3.1]
- Login Manager [3.2]
- Post-Install [4.0]
- Window Managers [4.1]
- Greeters [4.2]
- Extras [4.3]
- Troubleshooting [5.0]
- My fonts don't work! [5.1]
- I can't login from a screen lock! [5.2]
- I can't change the system time! [5.3]
- XYZ package fails to build! [5.4]
- How You Can Help [6.0]
- References [7.0]
[0.0] Getting Started
________________________________________________________________________________
To begin using the K Desktop Environment there are two choices. The first option
is to use a prebuilt tarball similar to the KISS release tarballs and install it
analogously to how one installs KISS. The second is to build every package from
source from an existing KISS installation. Beyond this, one need only clone two
git repositories, install dbus, and choose whether to use libudev-zero or eudev.
There are several optional features that users have a choice on. These choices
include authentication backends, login managers, and window managers. These
choices can be changed at any time, and will simply require rebuilding certain
packages. The following subsections offer an explanation of what these choices
are and how best to handle their consequences.
The first thing to do is clone the repositories and add them to your $KISS_PATH.
Assuming that you keep these repositories in $HOME,
+------------------------------------------------------------------------------+
| |
| $ git clone https://github.com/kiss-community/community |
| $ git clone https://github.com/dilyn-corner/KISS-kde |
| |
| $ export KISS_PATH="$HOME/KISS-kde/extra:$KISS_PATH" |
| $ export KISS_PATH="$HOME/KISS-kde/plasma:$KISS_PATH" |
| $ export KISS_PATH="$HOME/KISS-kde/frameworks:$KISS_PATH" |
| $ export KISS_PATH="$KISS_PATH:$HOME/community/community" |
| |
| # you can optionally include the kde path for sddm, dolphin, etc. |
| $ export KISS_PATH="$KISS_PATH:$HOME/KISS-kde/kde" |
| |
+------------------------------------------------------------------------------+
[0.1] Authentication
____________________________________________________________________________
KDE utilizes polkit and PAM for authentication. They provide a robust
backend and sets of features which allow for more fine-grained control of
which users can perform what actions. However, there are no strict
requirements to use them. For instance, kauth (the framework responsible for
providing access to the polkit backend) only optionally requires polkit.
Additionally, kscreenlocker (the program responsible for locking the screen)
only requires PAM in instances where the login manager has failed to
properly track user sessions and will not allow the user to login.
In the case of single-seat or single-user machines, complicated
authentication frameworks might be seen as a needless additional form of
security. If users decide they do not wish to make use of these features,
they are not required to do anything.
In cases where users would prefer to have fine-grained controls over access,
the only prerequisite is to install a user permissions backend and polkit
prior to building the rest of KDE. The permission systems allowed are
linux-pam or shadow. If users intend on installing a login manager (such as
elogind), PAM should be chosen. Otherwise, shadow is an excellent option
(and is available in community).
If a user wishes to go this route, simply build and install linux-pam or
shadow, and then install polkit:
+--------------------------------------------------------------------------+
| |
| $ kiss b linux-pam && kiss i linux-pam |
| $ kiss b polkit && kiss i polkit |
| $ kiss b polkit-qt-1 && kiss i polkit-qt-1 |
| |
+--------------------------------------------------------------------------+
If users change their mind after setting up KDE, reverting is as simple as
rebuilding the relevant packages. For instance, if a user decided to build
polkit and linux-pam and wishes to drop the stack entirely,
+--------------------------------------------------------------------------+
| |
| # Uninstall linux-pam and polkit |
| $ KISS_FORCE=1 kiss r linux-pam polkit polkit-qt-1 |
| |
| # Rebuild kauth, kscreenlocker |
| $ kiss b kauth kscreenlocker |
| $ kiss i kauth kscreenlocker |
| |
+--------------------------------------------------------------------------+
Known issues with lacking proper authentication backends includes the
inability to use systemsettings to alter things like the time.
NOTE: currently there seems to be an issue with authentication in general;
kscreenlocker does not allow users to log back in, and users cannot change
the date or time. Without linux-pam installed, the former issue is resolved.
[0.2] Session Management
____________________________________________________________________________
Currently, users can either start plasma sessions via TTY or from a greeter.
Login managers provide a way by which certain other programs can track
sessions, and provide a measure of security for the system. For instance,
networkmanager optionally requires logind for ensuring internet features
return after the system wakes up from sleep, and sddm allows restrictions
on which UIDs can login to a system.
For users who have limited interest in managing their sessions via logind,
no action is required.
For users who wish to have session-tracking features or would like to
utilize programs like sddm, elogind is required (other options are
currently being explored). elogind requires PAM. As a result, users choosing
to use elogind should do the following:
+--------------------------------------------------------------------------+
| |
| # Uninstall shadow if it is installed |
| $ KISS_FORCE=1 kiss r shadow |
| |
| # Install linux-pam |
| $ kiss b linux-pam && kiss i linux-pam |
| |
| # Rebuild polkit |
| $ kiss b polkit polkit-qt-1 && kiss i polkit polkit-qt-1 |
| |
| # Install elogind |
| $ kiss b elogind && kiss i elogind |
| |
| # Because of the way we build polkit, rebuild it |
| $ kiss b polkit && kiss i polkit |
| |
+--------------------------------------------------------------------------+
See [4.2] on configuration options for sddm.
NOTE: to take advantage of the authentication backend, users should
reinstall kauth and kscreenlocker.
[0.3] Default Window Manager
____________________________________________________________________________
Currently there are two primary window managers that can be chosen: kwin and
kwinft. kwinft [3] is a composited window manager for X11 and Wayland
systems. Most of the differences between kwinft and kwin are in the
underlying code; kwinft is designed to have better coding practices and be
well-organized. However, any features that appear in kwinft can be expected
to eventually show up in kwin. So if you prefer a more bleeding edge,
potentially better window manager for KDE, kwinft is an option.
By default, kwin will be installed. If you wish to change this, fork
plasma-{workspace,desktop} and alter the depends files. All you are required
to do is uncomment the kwinft lines in the dependencies lists and comment
out kwin. For more information on forking packages, see [4]. In order to
change which is used on an existing installation,
+--------------------------------------------------------------------------+
| |
| $ pkill X |
| |
| $ KISS_FORCE=1 kiss r kwin kwayland-server |
| |
| $ kiss b kwinft && kiss i kwinft |
| |
| $ kiss b plasma-workspace && kiss i plasma-workspace |
| $ kiss b plasma-desktop && kiss i plasma-desktop |
| |
| $ startx |
| |
+--------------------------------------------------------------------------+
[1.0] From Scratch
________________________________________________________________________________
Building KDE is a very straightforward process. In fact, if users already have a
working xorg setup, then it is as simple as building a single package - the
package manager will take care of the rest.
The package to install when going this route is plasma-desktop. This package
will pull in the required packages to have a fully working desktop environment,
and will additionally include a system settings manager, a default theme
(breeze), and some default icons (breeze-icons). There are some extra packages
which can be installed for more features, such as bluedevil, drkonqi, and
powerdevil. See [4.0] for more information.
[1.1] Prerequisites
____________________________________________________________________________
Ensure that you have the proper required packages installed: libudev-zero,
dbus, and xorg-server. libudev-zero has been tested to work with KDE.
Optionally, eudev also works. The choice is up to you! Currently,
dbus-alternatives (like a stub library) are untested. The dependencies of
the KDE packages assume many Xorg libraries are already installed. Not
having xorg-server might result in missing dependencies.
These are the only requirements for building plasma-desktop.
NOTE: in order to build certain extras, coreutils is required. Specifically:
elogind, libblockdev, and udisks2 require three separate programs. Patches
are welcome to resolve this! coreutils provides files which conflict with
other KISS packages, such as busybox. To ensure we are using the correct
programs when we attempt to build these extras, we use the alternatives
system! For more information on this system, see [5]. This is not required
if you do not care about elogind.
+-------------+------------------------------------------------------------+
| Package | Requirement |
|-------------+------------------------------------------------------------|
| | |
| elogind | /usr/bin/realpath --relative-to |
| udisks2 | /usr/bin/ln -r |
| libblockdev | /usr/bin/mktemp --tmpdir |
| | |
+-------------+------------------------------------------------------------+
NOTE: additionally, if desired, you must enable cgroup support in your
kernel for elogind. see [6] for more details.
Ensure the relevant prerequisites are installed:
+--------------------------------------------------------------------------+
| |
| $ kiss b libudev-zero dbus |
| $ kiss i libudev-zero dbus |
| $ kiss b xorg-server libinput xf86-input-libinput |
| $ kiss i xorg-server libinput xf86-input-libinput |
| |
| # If you opt to install e.g. elogind |
| $ kiss b coreutils && kiss i coreutils |
| $ kiss a coreutils /usr/bin/realpath |
| $ kiss a coreutils /usr/bin/mktemp |
| $ kiss a coreutils /usr/bin/ln |
| |
+--------------------------------------------------------------------------+
NOTE: If you had packages like xorg-server installed, you might want to
rebuild them to pickup on the new device manager they can take advantage of.
If you do not currently have xorg-server installed, you will want to get it.
A pure wayland KDE is both untested and unlikely to work.
NOTE: with the release of plasma 5.20.0, KDE is more aggressively supporting
a wayland environment. xorg support may be dropped in the future!
Make sure you do not currently have qt5 installed. The build files have been
tweaked for this repository to make use of dbus and libudev-zero. As a
result, carrying over the community version of these packages will lead to
unknown problems.
Because of the time required to build qt5* packages, some prebuilt tarballs
are available on the Github repository [7]. They are built in a standard
KISS tarball, with C(XX)FLAGS=-march=x86-64 -mtune=generic -Os -pipe.
NOTE: In general, it is a security risk to install prebuilt packages. these
archives are provided as a courtesy by $/dilyn-corner. Always verify the
authenticity of packages, and the identities of packagers!
The current release is 5.15.1, available with the 2020.10-1 release.
+--------------------------------------------------------------------------+
| |
| $ ver=2020.10-1 |
| $ qtver=5.15.1-1 |
| $ url=https://github.com/dilyn-corner/KISS-kde/releases/download/$ver |
| |
| $ wget $url/qt5.$qtver.tar.gz \ |
| -O qt5@$qtver.tar.gz |
| $ wget $url/qt5-declarative.$qtver.tar.gz \ |
| -O qt5-declarative@$qtver.tar.gz |
| |
| # Not a build-time requirement, but useful for e.g. falkon |
| $ wget $url/qt5-webengine.$qtver.tar.gz \ |
| -O qt5-webengine@$qtver.tar.gz |
| |
+--------------------------------------------------------------------------+
It is recommended to verify the checksums for these tarballs to ensure
package integrity!
+--------------------------------------------------------------------------+
| |
| $ wget $url/qt5.$qtver.tar.gz.sha256 |
| |
| $ sha256sum -c < qt5@$qtver.tar.gz |
| $ sha256sum -c < qt5-declarative@$qtver.tar.gz |
| $ sha256sum -c < qt5-webengine@$qtver.tar.gz |
| |
+--------------------------------------------------------------------------+
+--------------------------------------------------------------------------+
| |
| $ kiss i qt5@$qtver.tar.gz |
| $ kiss i qt5-declarative@$qtver.tar.gz |
| $ kiss i qt5-webengine@$qtver.tar.gz |
| |
+--------------------------------------------------------------------------+
[1.2] Installing
____________________________________________________________________________
Now that all of the build requirements are taken care of, we can install
the desktop environment. Just over a hundred packages are required.
+--------------------------------------------------------------------------+
| |
| $ kiss b plasma-desktop && kiss i plasma-desktop |
| |
+--------------------------------------------------------------------------+
Optionally, enable and start the dbus service:
+--------------------------------------------------------------------------+
| |
| $ ln -s /etc/sv/dbus /var/service |
| $ sv up dbus |
| |
+--------------------------------------------------------------------------+
No services are required to be running in order to start a plasma session.
[1.3] Launching
____________________________________________________________________________
Once plasma-desktop has been installed, launching KDE is as simple as
adding the following to whatever script you use to start X:
+--------------------------------------------------------------------------+
| |
| $ exec dbus-launch --exit-with-session startplasma-x11 |
| |
+--------------------------------------------------------------------------+
The default fonts KDE usually ships with are hack and noto-sans. The former
is available in community, and the latter is included in KISS-kde/extra.
Ensure that you have a font installed prior to launching Plasma!
[2.0] The KISS-kde tarball
________________________________________________________________________________
Similarly to KISS itself, a tarball containing a fully-functional KISS with
KDE setup is available from the GitHub repository [7]. This archive can be
chrooted into or directly unpacked to '/'. It is built from a kiss-chroot
archive with identical generic C(XX)FLAGS, and is ~330MB in size.
NOTE: In general, it is a security risk to install prebuilt packages. This
archive is provided as a courtesy by $/dilyn-corner. Always verify the
authenticity of packages, and the identities of packagers!
The KISS-kde archive is a fully installed version of plasma-desktop, but does
not make choices for the user. As a result, it should be installed
identically to how KISS is normally installed, using the KISS install guide.
See [8] for KISS setup instructions.
There will be monthly releases of the KISS-kde tarball to keep up with upstream.
The format of releases will be in YYYY-MM format.
To download e.g. the first October 2020 release,
+------------------------------------------------------------------------------+
| |
| $ ver=2020.10-1 |
| $ url=https://github.com/dilyn-corner/KISS-kde/releases/download/$ver |
| $ wget $url/kiss-kde-$ver.tar.xz |
| |
+------------------------------------------------------------------------------+
It is strongly recommended to verify the checksums to avoid problems like
using a partially downloaded archive.
+------------------------------------------------------------------------------+
| |
| $ wget $url/kiss-kde-$ver.tar.xz.sha256 |
| $ sha256sum -c < kiss-kde-$ver.tar.xz.sha256 |
| |
+------------------------------------------------------------------------------+
After setting up your disks, mount your desired root partition to '/mnt' and
to install the latest release,
+------------------------------------------------------------------------------+
| |
| $ tar xf kiss-kde-$ver.tar.xz -C /mnt |
| |
+------------------------------------------------------------------------------+
and enter the chroot environment,
+------------------------------------------------------------------------------+
| |
| $ /mnt/bin/kiss-chroot /mnt |
| |
+------------------------------------------------------------------------------+
From here, simply follow the rest of the install guide [8].
For help with kernels, see @/kernel. For help with bootloaders, see @/boot.
It is recommended that you change the root password; the default is "toor".
After setting up everything, it should be as simple as:
+------------------------------------------------------------------------------+
| |
| $ exit |
| $ reboot |
| $ startx |
| |
+------------------------------------------------------------------------------+
You should now be greeted with a fresh Plasma Desktop!
[3.0] Starting KDE
________________________________________________________________________________
You have two choices on how to launch KDE. Either you can start it directly from
the console, or you can make use of a login manager.
[3.1] Console
____________________________________________________________________________
Launching a KDE session directly from the console is very straightforward.
If you would like to use wayland instead of X, replace x11 by wayland in the
below command.
Simply add a line to your xinitrc file:
+--------------------------------------------------------------------------+
| |
| $ launch="exec dbus-launch --exit-with-session startplasma-x11" |
| $ echo "$launch" >> "$HOME/.xinitrc" |
| |
+--------------------------------------------------------------------------+
It may be useful to set a runtime directory. A wayland session requires this
be set, and an X session will default to /tmp if you do not set one. Add
this example to somewhere like .profile:
+--------------------------------------------------------------------------+
| |
| export XDG_RUNTIME_DIR="${XDG_RUNTIME_DIR:-/tmp/$(id -u)-runtime}" |
| |
| [ -d "$XDG_RUNTIME_DIR" ] || { |
| mkdir -p "$XDG_RUNTIME_DIR" |
| chmod 0700 "$XDG_RUNTIME_DIR" |
| } |
| |
+--------------------------------------------------------------------------+
[3.2] Login Manager
____________________________________________________________________________
The KISS-kde repository also includes sddm [9], the Simple Desktop Display
Manager, as an option for a greeter. It requires a login manager. elogind is
the default; other options are currently being tested. First, build and
install elogind
+--------------------------------------------------------------------------+
| |
| $ kiss b elogind && kiss i elogind |
| # So that polkit will build the correct libs to support elogind, |
| $ kiss b polkit && kiss i polkit |
| |
+--------------------------------------------------------------------------+
Then, install sddm
+--------------------------------------------------------------------------+
| |
| # sddm is in the KISS-kde/kde repo |
| $ kiss b sddm && kiss i sddm |
| |
+--------------------------------------------------------------------------+
NOTE: by default, it may not be possible for root to login via sddm. Best
practices would dictate that you login as an unprivileged user.
Enable the requisite services for sddm to function properly. For KISS'
default service manager,
+--------------------------------------------------------------------------+
| |
| $ ln -s /etc/sv/polkitd /var/service |
| $ ln -s /etc/sv/elogind /var/service |
| $ ln -s /etc/sv/sddm /var/service |
| |
| $ sv up polkitd |
| $ sv up elogind |
| $ sv up sddm |
| |
+--------------------------------------------------------------------------+
If everything went well, sddm should immediately launch after you start the
sddm service.
[4.0] Post-Install
________________________________________________________________________________
Everything you do from here on is to customize your new Plasma Desktop to your
own needs! No further setup or configuration is required. However, there are a
few things available to you that you can change, if you so choose.
[4.1] Window Managers
____________________________________________________________________________
It is possible to use your favorite window manager with KDE, and it is
shockingly simple. All that is required is to install whatever window
manager you would prefer (dwm, i3, sowm, etc.), and add the following to
your environment:
+--------------------------------------------------------------------------+
| |
| # replace 'sowm' with whichever wm you prefer |
| $ export KDEWM=sowm |
| |
+--------------------------------------------------------------------------+
A 'good place' is up to the user; for per-user choice, add it to .profile or
your xinitrc file. To use the choice system-wide, add it to /etc/profile or
/etc/X11/xinit/xinitrc.
[4.2] Greeters
____________________________________________________________________________
sddm is a feature-rich but straightforward greeter; see [3.2] for
installation and setup instructions. sddm can be configured heavily.
Configuration is read from /etc/sddm.conf. If it does not exist, you can
generate it:
+--------------------------------------------------------------------------+
| |
| $ sddm --example-config >> /etc/sddm.conf |
| |
+--------------------------------------------------------------------------+
You can manually edit this file to allow for autologins, changing themes,
changing the user icons, or even changing the range of UIDs that can login
through sddm.
Alternatively, configuration can be done graphically during a plasma
session. Simply install sddm-kcm and a sddm configuration section in
systemsettings should become available.
+--------------------------------------------------------------------------+
| |
| $ kiss b sddm-kcm && kiss i sddm-kcm |
| |
+--------------------------------------------------------------------------+
NOTE: other greeters are untested. If you find success with alternatives,
make a PR to add them!
[4.3] Extras
____________________________________________________________________________
Several things are included in KISS-kde/kde. Examples include sddm,
kvantum [10] and latte-dock [11].
Separate from these are the KDE Applications, such as krita or dolphin.
Some useful (and working) applications include dolphin and konsole.
Finally, there are several useful extra programs which will enhance the
standard KDE experience.
+-------------+------------------------------------------------------------+
| Package | Description |
|-------------+------------------------------------------------------------|
| | |
| sddm | The Simple Desktop Display Manager |
| kvantum | An svg-based theme engine for qt5 |
| latte-dock | A feature-rich dock based on the Plasma Framework |
| | |
| dolphin | The default KDE file manager |
| konsole | The default KDE terminal emulator |
| | |
| baloo | A framework for file indexing and metadata management |
| drkonqi | A useful crash handler |
| udisks2 | A disk manager |
| kgamma5 | Change the monitor's gamma |
| khotkeys | Expanded hotkey modification |
| bludevil | Bluetooth integration |
| powerdevil | Power usage settings |
| kinfocenter | Displays useful system information |
| | |
+-------------+------------------------------------------------------------+
[5.0] Troubleshooting
________________________________________________________________________________
Here is a collection of some common issues you might encounter in buiding or
running KDE. If you encounter any other problems, please submit an issue at
$/dilyn-corner/KISS-kde.
[5.1] My fonts don't work!
____________________________________________________________________________
If the fonts you have installed don't appear in any Qt applications, such as
konsole, but DO appear in other applications, such as st, Qt is not properly
identifying your font location. This can be confirmed by running a Qt app
from a terminal and seeing warnings about how Qt does not ship fonts, and it
could not find them in /usr/lib/fonts. Additionally, qtdiag may inform you
that the default system font is noto-sans, regardless of whether or not
noto-sans is installed.
This issue should be resolved by merely rebuilding qt5.
[5.2] I can't login from a screen lock!
____________________________________________________________________________
This is a known issue with kscreenlocker and KISS. The problem would
seemingly lie with PAM not properly authenticating the user. This remains
unresolved.
If the user trying to login is root, you may have luck killing the
kscreenlocker_greet process.
The short term fix is to disable screen locking during inactivity, not
require a password while unlocking, or to simply never lock the screen.
This issue does not exist on systems which do not have linux-pam installed.
[5.3] I can't change the system time!
____________________________________________________________________________
Administrative actions currently cannot be executed as any user in places
such as systemsettings.
A solution to resolve this issue is currently unknown.
[5.4] XYZ package fails to build!
____________________________________________________________________________
Please open an issue on the GitHub page! The dependencies have been
minimized as much as possible to ensure the fewest things required are
pulled in to have a working system. As a result, some things may fail to
build independently. Some dependency requirements are simple fixes. Some
examples include:
+---------------+----------------------------------------------------------+
| required pkg | Error |
|---------------+----------------------------------------------------------|
| | |
| pkgconf | ...pkg foo not found... |
| linux-headers | linux/bar.h not found |
| | |
+---------------+----------------------------------------------------------+
[6.0] How You Can Help
________________________________________________________________________________
The KISS-kde project is always looking for more contributors. Whether it is
fixing build errors, submitting patches, or adding applications, every
contribution is welcome!
For a current list of project milestones, check out the first section of the
README at $/dilyn-corner/KISS-kde.
[7.0] References
________________________________________________________________________________
[0] https://kde.org
[1] https://qt.io
[2] https://k1sslinux.org/guidestones
[3] https://gitlab.com/kwinft/kwinft
[4] https://k1sslinux.org/package-manager#3.2
[5] https://k1sslinux.org/package-manager#5.3
[6] http://linuxfromscratch.org/blfs/view/svn/general/elogind.html
[7] https://github.com/dilyn-corner/KISS-kde/releases
[8] https://k1sslinux.org/install
[9] https://wiki.archlinux.org/index.php/SDDM
[10] https://github.com/tsujan/Kvantum
[11] https://github.com/KDE/latte-dock
________________________________________________________________________________
This site is an archive of a previous version of KISS's website. The current
version can be found at https://kisslinux.org/.
Dylan Araps (C) 2019-2020
kiss-community (C) 2020-2021
Dilyn Corner (C) 2021
Linux(R) is the registered trademark of Linus Torvalds in the U.S. and
other countries.