|/
|\ISS https://k1sslinux.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 uses the Qt framework to generate a simple, featureful, and gorgeous desktop.
This is very much in alpha. 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
-
breeze-icons - /usr/bin/grep --quiet
-
-
Properly configure docbook generationCurrently,docbook-xsl
doesn't actually do anything, I don't think.- This has been avoided because we just dropped the requirement.
-
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
-
Configure
pam
in a meaningful way -
Remove JS backend from polkit
- This project will rely on forward-porting the work done here
- This allows us to drop
mozjs
- The current milestone is to get rid of innetgr from our patches.
- Once innetgr is no longer required, we can drop our
musl
fork.
-
Enable a login-manager and greeter
-
elogind
-
sddm
-
seatd
to replaceelogind
-
greetd
+ greeter to replacesddm
- Bundle a default theme (breeze)
-
-
Expand
plasma-desktop
for a 'comprehensive' extension-
breeze
-
breeze-icons
-
systemsettings
-
kinfocenter
-
bluez
-
networkmanager
-
pulseaudio
-
udisks2
-
vaultcrypt
-
-
Package some KDE apps
-
ark
-
calligra
-
dolphin
-
dragon
-
elisa
- immediately crashes -
falkon
-
filelight
- segfault on launch -
gwenview
-
kaffeine
-
kate
-
kdenlive
-
kdevelop
-
kget
-
kgpg
-
kmail
-
konqueror
-
konversation
-
konsole
-
krita
-
ktorrent
-
kwalletmanager
-
kwave
-
latte-dock
-
okular
-
spectacle
-
yakuake
-
-
Test
wayland
support-
plasma 5.20.0
- fork
xorg-server
to addxwayland
support - sucessfully launch a
kwin_wayland
session
-
-
Ensure everything works!
- Sessions can start from
startx
- Sessions can start from
sddm
- Applications launch
- Menus work
- Themes work
- Settings work
- [~] Users can log back in from a lock (super+l) - works without
pam
- Bluetooth - can't test
- Power management -untested
- Disk/hardware management -untested
- 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 or docs. This was done in three parts:
-
Hobble
ki18n
by removing thegettext
dependency- Without learning C, I will not be able to drop the
ki18n
dependency.
- Without learning C, I will not be able to drop the
-
Delete all translation files located in
po
from packages which 'require' them. -
Remove the
kdoctools
dependency from packages which 'require' it.
If you would like to have languages besides english available:
* Package `gettext`
* Remove the patch for `ki18n`
* Remove `rm -rf po` from each build script that has it
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!
if you would like to have documentation:
* git revert --no-commit df2c33d^..e6f0a36
Large portions of this repository are forked packages from the official
repository modified as needed. Many of the
packages in extra/
are from the community
repository, though not necessarily
different (maintenance is volatile in community
).
Usage of this repository assumes that the official repository and the community repository are also in-use, but otherwise rely on no external packages.
The dreaded(?) question.
The trouble with evading dbus
is not with building KDE.
It's with launching it.
If you attempt to startx startplasma-x11
, you will probably be met with an
error message about dbus
. KDE tries very hard to have a running dbus
session to latch onto. So much so that it shits itself if one isn't running.
It'll print an error if you try to just launch plasma, it'll hang at a black
screen if you attempt to launch kwin
via xinit
, etc.
Which would seem to make dbus
a hard dependency for KDE.
plasma-desktop
et al build fine with
libdbus-stub. The hard part would
probably be getting dbus-launch
to execute meaningfully with a stub library.
Unless we can find a way around this, 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?
You'll notice in many distros that there are many versions of, for instance,
polkit swimming around. I don't want to maintain a bunch of polkit versions for
different login managers and greeters. In fact, I want as minimal maintenance as
possible. But I also want to maximize choice. There's no good reason to assume
a user wants pam
over shadow
. There's no good reason to assume anything
about what the user wants! But this minimalism should decrease friction as much
as possible. I don't want to punish users for wanting to install these programs.
I definitely don't want to force them to do the reading I did either!
For the user who is disinterested or unconcerned with pam
, polkit
,
elogind
, etc., they are required to do nothing. Not only is this in line with
KISS' goals as a project, but it also doesn't require users to do large amounts
of research to do what should be routine maintenance or security management. If
a user wants to install polkit
or, maximally, elogind
, only a few packages
must be built prior to building plasma-desktop
.
The process for first-time users and current ones should be the same:
# ensure shadow is not installed
$ KISS_FORCE=1 kiss r shadow
# install the auth backend
$ kiss b pam && kiss i pam
# install polkit
$ kiss b polkit polkit-qt5 && kiss i polkit polkit-qt5
# use coreutils realpath
$ kiss b coreutils && kiss i coreutils
$ kiss a coreutils /usr/bin/realpath
# install elogind
$ kiss b elogind && kiss i elogind
# rebuild polkit
$ kiss b polkit && kiss i polkit
Rebuild kauth
and kscreenlocker
if you already had them installed.
The engine that make it go!
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
.
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,
As it stands, few parts require xorg
. Indeed, you can build almost every
package in this repository without any xorg
libraries at all! Unfortunately,
GLX is required. GLX is provided by mesa
, and will only be built if the X11
platform is built. This brings in the largest number of dependencies. Next to
this, plasma-desktop
requires xorg-server
, and there are a few xorg
libraries required by a couple of packages.
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
fork plasma-desktop
and plasma-workspace
, and comment kwin
from their
depends file and uncomment kwinft
. then simply build plasma-desktop
. If you
have already installed kwin
fear not! Do the comment switcheroo as before,
force-uninstall kwin
, reinstall plasma-{desktop,workspace}
(which should
pull-in everything required for kwinft
), and then simply kill your KDE session
if you're in one, 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
,{xf86-input-}libinput
,dhcpcd
, maybe more.
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 {dbus,eudev}
.
If you opt to use elogind
(required for sddm
), you will need the following:
-
Choose between
shadow
orpam
, and install your choice. -
Install
polkit
. -
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.
Ensure you do not have qt5*
installed.
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 (built from a blank KISS-chroot), you can simply install these xz
archives instead of building them. qt5-webengine
is NOT required, just
convenient.
plasma-desktop
includes the basic requirements to launch a KDE session and use
plasma. In order to minimize the system footprint as much as possible, things
like fonts or starting applications are not included. You may wish to install
hack
or noto-fonts
, along with systemsettings
and kinfocenter
.
Additionally, breeze-icons
will give you a default set of icons.
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! 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 (final product on a fresh install will be just north of
150 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/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"
# 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
# If you've opted to use e.g. elogind, you'll need
# to do the following!
# Choose shadow or pam to use with polkit
$ kiss b shadow && kiss i shadow
$ kiss b polkit && kiss b polkit
# Thanks to the alternatives system, we can just pluck out
# the few binaries we need from `coreutils`.
$ kiss b coreutils && kiss i coreutils
# For elogind
$ kiss a coreutils
/usr/bin/realpath
# For libblockdev & udisks
$ kiss a coreutils /usr/bin/mktemp
$ kiss a coreutils /usr/bin/ln
$ kiss b elogind && kiss i elogind
# We're finally ready!
$ kiss b plasma-desktop
~~~ SEVERAL HOURS LATER ~~~
$ 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 and hack are in KISS-kde/extra. noto is massive.
# hack is very small and good.
# Any TTF font should work though.
# You might want to make a runtime directory or KDE will
# make one for you. This is required for a wayland session.
# Put these lines in somewhere like $HOME/.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" }
# 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:
$ 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. To install from the first October 2020 release,
$ ver=2020.10-1
$ wget https://github.com/dilyn-corner/KISS-kde/releases/download/$ver.tar.xz
# 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.
$ 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...