|/
|\ISS https://k1ss.org
KISS-kde - A KISS repository for the Plasma Desktop
This is currently a work in progress. Feel free to help out!
KDE is a full-featured desktop environment for Linux! It includes a framework
to allow for integration with the system, utilizing dbus
and pam
, along with
plasma
, a beautiful and modern desktop.
This is very much in alpha. I will keep this repository up-to-date as best I can, testing and building things as frequently as possible - it's a big project that requires a fair amount of maintenance. Luckily, I have the hard drive space and the free time. But I'm only one person; if you have a contribution, feel free to share it. Requests like this should follow the KISS style guide as closely as possible, but I'm not too much of a stickler.
Here are all of the things that can be worked on.
-
Cleanup repository structure
-
Make patches to remove extraneous dependencies
-
elogind - /usr/bin/realpath --relative-to
-
libblockdev - /usr/bin/mktemp --tmpdir
-
udisks2 - /usr/bin/ln -r
-
gnugrep - /usr/bin/grep --quiet
-
-
Properly configure docbook generation
- Currently,
docbook-xsl
doesn't actually do anything, I don't think.
- Currently,
-
Get the core working
- Generate build files
- Make sure the core builds
- Ensure KDE launches
-
Find a sane default collection,
plasma-desktop
- KDE Framework
- Plasma
-
systemsettings
-
breeze
-
breeze-icons
-
Configure
linux-pam
in a meaningful way -
Remove JS backend from polkit
- This project will rely on forward-porting the work done here
- The goal is that we can drop
mozjs
- it's the only package which requiresmozjs
and it means we can also dropnspr
, which I have been to lazy to make coincide 'cleanly' withcommunity/nss
. - The currently milestone is now to fix one of the patches we're using in
polkit
to dropmozjs
; we basically need to get rid of innetgr from the code so we drop ourmusl
patch (which Rich Felker does not approve of).
-
Enable a login-manager
- Bundle a default theme (breeze)
- Package an alternative
-
seatd
to replaceelogind
-
greetd
+ greeter to replacesddm
This change would mean thatrust
is a build-time requirement. Gross. However, ideally this can be the default, and people can seek out theelogind
stack themselves. If they... want... that...
-
-
Expand
plasma-desktop
for a 'comprehensive' extension- login manager -
sddm
for now! -
udisks2
-
vaultcrypt
-
networkmanager
-
bluez
-
pulseaudio
- this exists external to this repo
- login manager -
-
Package some KDE apps
-
krita
-
kdenlive
- halts at splash -
kwave
-
dragon-player
- doesn't play tracks -
kaffeine
-
elisa
- immediately crashes -
calligra
-
kdevelop
-
konsole
-
yakuake
-
okular
-
gwenview
-
spectacle
-
kate
-
dolphin
-
filelight
-
ark
-
falkon
-
konqueror
-
kget
-
kmail
-
kwalletmanager
-
kgpg
-
ktorrent
-
latte-dock
-
-
Test
wayland
support-
plasma 5.20.0
- IT WILL BE THE DEFAULT.
-
-
Ensure everything works!
- Sessions can start from
startx
- Sessions can start from
sddm
- Applications launch
- Menus work
- Themes work - bugged in 5.19.2?
- Settings work
- Users can log back in from a lock (super+l) (root can, but not users?)
- Bluetooth
- Power management
- Disk/hardware management
- Sessions can start from
-
Create tarball
-
Live USB
- initramfs
-
tinyramfs
-
dracut
-
allyesconfig
kernel /s
-
-
ncurses
-style installer?
- initramfs
This list will be expanded, contracted, and refined as necessary. Feel free to assist.
I have opted not to include internationalization. This was done in two parts:
-
Hobble
ki18n
by removing thegettext
dependency -
Delete all translation files located in
po
from packages which 'require' them.
If you would like to have languages besides english available, it should be
quite easy. First, package gettext
. Second, remove the patch in the ki18n
package. Finally, simply remove rm -rf po
from each build script in which it
appears. This is probably trivial (cough sed
cough).
Additionally, there are packages which I had to go further to remove gettext
and intltool
from. It shouldn't be too hard to find them on your own (the
patches are sanely named, remove-gettext.patch
and remove-intltool.patch
).
Fix up the build files as required!
The dreaded(?) question.
Based on my current knowledge of KDE, dbus
is required by
a litany of programs. Many which don't explicitly require
dbus
will nontheless build against it if it is available.
The hard part, however, is not the framework. Instead, it is
for launching KDE itself.
If you attempt to startx startplasma-x11
, you will
probably be met with an error message about dbus
. You see,
KDE requires something like polkit
, elogind
, etc. to
start. Indeed even with wayland
this is the case. Additionally, dbus
is used
by integral parts of the system to do... Most things. Which is why KDE tries so
hard to ensure it is running before it is launched.
Which would seem to make dbus
a hard dependency for KDE.
Unless we can find a way around this (and I am certainly not
the one to do it!), dbus
is required. I have no real
problems with this. If you take umbridge with this hard
fact, perhaps reflect on why you want KDE in the first
place?
The engine that make it go!
The qt dependency includes packages which overlap with community, like qt5
.
Additionally, qt5
requires packages from community at build time. If a package
in community has been changed, it will be forked into this repository. As a
result, you should place this repository in your $KISS_PATH
before
community.
qt5*
, specifically qt5-webengine
, take a very long time to build (thanks,
chromium). As a result, I have included along with this repository a KISS
tarball of the fully built packages for the three parts of the qt5
suite that
take more than twenty minutes to build. These are compiled assuming you've
satisfied the dependencies of this repository. Built with everyone's favorite
GNU C compiler, with CFLAGS=-march=x86-64 -mtune=generic -Os -pipe
. If you
want a 'seamless' build, merely plop these archives in
${XDG_CACHE_DIR:-$HOME/.cache}/kiss/bin
, and make sure you change the . before
the 5 to a @ so kiss
doesn't complain.
The eternal debate.
Starting with the release of plasma 5.20.0
, wayland
will be the presumptive
default for KDE. I'm unsure to what extent they plan to leave xorg
available,
but as it stands many parts of KDE require xorg pieces to function. Wayland is
an exciting project, and having been using it on my own personal KISS box, I can
recommend it heartily over xorg
in general - it seems to have matured as a
protocol, there is still incredibly active development work (as opposed to
critical-bug-fixing-only for xorg
), and the performance is quite stellar.
Additionally, kwinft
is a fork of kwin
which purports to better support
wayland. It is a more bleading-edge, development focused 'branch' of kwin
.
Bound to be bugs that crop up. Presumably, kwinft
is strictly better than kwin
.
Currently, it's your choice which you choose! If you opt to use kwinft
, simply
comment kwin
from plasma-desktop/depends
and plasma-workspace/depends
and uncomment kwinft
, and then simply install plasma-desktop
or plasma
.
If you have already installed kwin
fear not! Do the comment switcheroo as before,
reinstall those packages (which should pull-in everything required for kwinft
),
and then simply kill your KDE session if you're in one, uninstall kwin
, and
restart the session! If you run into bugs, please make sure they're not kwinft
related - burn down the developer's door for those.
-
This all (currently) assumes a working
xorg-server
. -
You will need
dbus
. Because of this, you'll have to rebuildqt5
. -
You will need
eudev
orlibudev-zero
. Because of this, you'll need to rebuildxorg-server
, any input packages (libinput
,xf86-input-libinput
, etc.),dhcpcd
, perhaps others.
These rebuilds are obviously not required if you already had
the relevant programs built against dbus
, eudev
, etc. To determine which
packages are built against dbus
or eudev
merely run kiss-revdepends eudev
.
If you see xorg-server
, you're probably fine.
If you opt to use elogind
(required for sddm
), you will need the following:
-
cgroups. I leave it up to you to test your own kernel configs.
-
You will require exactly
realpath
fromcoreutils
.
coreutils
is a build time requirement, so you are free to remove
it with no ill-effects afterwards.
Now that we have all of that nonsense out of the way, let's get to it!
We start with the assumption that you just installed KISS,
following the installation guide
exactly, which means you have libudev-zero
or eudev
, a working xorg
that
knows about eudev
, some input drivers, and fonts. Although
this repo does include some nice fonts, so either way you're
covered.
You might have a few extra programs, like pcre2
and some
xcb
already installed. Great! It might save you time. Not
really. You shouldn't have too many conflicts to deal with,
if any. Just make sure you've uninstalled qt5
and
friends.
NOTE: I have taken the liberty of uploading a KISS package for qt5
,
qt5-webengine
, and qt5-declarative
. Assuming your system is roughly similar
to mine, and you've installed all of their dependencies, you can simply install
these xz archives instead of wasting ten hours building them. Trust me.
plasma-desktop
includes basically every single item in the framework you would
need in order to have a recognizable KDE experience. It has icons and some
default things like an application launcher, a system monitor, a settings
manager.
If you want a more 'full-featured' KDE environment, you can install useful
extras. This list includes things such as bluedevil
and bluez
. udisks2
is
also here! You can also install noto-fonts
for the more default looking KDE
look. Additionally, plasma-workspace-wallpapers
includes many additional
wallpapers for your pleasure.
NOTE: bluez
and other things are more are less untested; ymmv. If you
discover issues, please raise them! If you discover solutions, please PR them!
To get a 'minimal' KDE (it's over a hundred packages),
simply install plasma-desktop
. How convenient! Here's how
you do it:
NOTE: It doesn't matter where you keep these repos (or
any KISS repos, for that matter). I keep mine in
$HOME/git
. For now, assume I've done git clone
in $HOME
.
$ git clone https://github.com/kisslinux/community # Clone
$ git clone https://github.com/dilyn-corner/KISS-kde # pls
# Add relevant repository paths
$ 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"
# If you don't already have it,
# replace `libudev-zero` with `eudev` if you prefer
$ kiss b dbus libudev-zero && kiss i dbus libudev-zero
# If you just did the previous or don't have xorg,
$ kiss b xorg-server libinput xf86-input-libinput
# Add others as necessary
# Thanks to the alternatives system, we can just pluck out
# the few binaries we need from `coreutils`, along with the grep utility.
# You only require coreutils if you opt to use `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
# We're finally ready!
$ kiss b plasma-desktop
~~~ WAIT TWELVE HOURS ~~~
$ kiss i plasma-desktop
# Start the eudev and dbus services for convenience
# This is ultimately not necessary
$ ln -sv /etc/sv/dbus /var/service
$ ln -sv /etc/sv/udevd /var/service
$ sv up dbus
$ sv up udevd
# Install a font of your choosing.
# noto-fonts is in KISS-kde/extra. It's massive.
# hack is in community. It's very small and good.
# Any TTF font should work though.
# Two options:
# 1. Use 'startx' to launch KDE
# 2. Use a login manager
# For startx:
$ pkill X
$ echo "exec dbus-launch --exit-with-session startplasma-x11" >> ~/.xinitrc
# Replace 'x11' with 'wayland' in the previous command to launch a wayland session
$ startx
# For sddm:
# Ensure elogind is built and installed
$kiss b elogind && kiss i elogind
# Build linux-pam:
$ kiss b linux-pam && kiss i linux-pam
$ kiss b sddm && kiss i sddm
# Enable the required services. FoR sEcUrItY
$ ln -sv /etc/sv/polkitd /var/service
$ ln -sv /etc/sv/elogind /var/service
$ ln -sv /etc/sv/sddm /ver/service
$ sv up polkitd
$ sv up elogind
$ sv up sddm # should launch sddm
ALTERNATIVELY you can install KISS with KDE already built and ready to go! It's basically just a KISS tarball. It is built with musl and GCC using:
C(XX)FLAGS=-march=x86-64 -mtune=generic -pipe -Os
The first release is built from a fresh KISS tarball. All future releases will
merely be published after performing updates on this original tarball.
Installing works almost identically to the usual
instructions. Just download the kiss-kde-$VER.tar.xz
from the releases tab and:
# Mount your relevant root partition to wherever. In this case, I choose /mnt
$ tar xf kiss-kde-$VER.tar.xz -C /mnt
$ ./mnt/bin/kiss-chroot /mnt
# Follow the KISS install guide - after the 'Rebuild KISS' section
$ exit
$ reboot
# Boot into your freshly installed KISS
# Login (user: root; pass: toor)
$ startx
# You should be greeted with KDE.
I need testers! People who just use the desktop to navigate through digital space and time. Does an application segfault? Does something simply fail to launch? I need to know! Do you run into build-time errors? Run-time? What are they! I have already run into a few, I've identified fixes for many and am working on solutions to others. But in the end, I am a simple person with simple needs. I cannot guarantee that everything works because I don't plan on using everything available. So jump in! Make a package! Fix bugs! Be my fren! But most importantly...