In the first years that I have used Linux, I switched back between GNOME 2, Ubuntu Unity, and KDE 3/4. Eventually I have settled with KDE 4. A couple years later, I used `KDE with Awesome WM before and since KDE Plasma 5 came out, I just use Awesome WM since they are not that easy to use together since KDE 5.
Still, both environments have their strong points. I'll list them here since both have their appeal to me.
Points for KDE Plasma
As trivial as screen locking sounds, it is incredible hard and painful on Linux. This is because there is no concept of a locked screen on the X server. All you can do is to start a program that will go full screen and grab all mouse and keyboard input. That program will let you enter your password and then quit if it is correct.
It is really brittle, because the screen locker might crash. In that case, the
screen is unlocked again. This can happen through a bug in the screen locker,
by getting the kernel to kill it when not enough RAM is left. Also you could
try to trick the underlying window manager to minimize the screen locker in
case it does not properly grab all the input devices. A thing that worked with
an older version of
slock was just to put my laptop on the docking station.
thinkpad-scripts would then call XRandR and
enable a second screen. Awesome WM would move all the windows to it. The screen
locker has started with just 1366×768 pixels and got moved to a 1920×1080 pixel
screen. You could see all the other windows, albeit you could not interact with
them. I have switched to
i3lock after noticing that the version shipped with
my Fedora release had this bug.
Even worse than killing the screen locker: When you have a laptop and want it
to automatically lock the screen on resume, you need to have a program running
that listens to the suspend event and starts the screen locker. This program
xss-lock. If that for some reason stops running (crashed, not
properly started), then the screen of your laptop will not get locked
automatically. I do not have the feeling that I could really rely on it and
therefore lock my screen by hand if I want to be absolutely sure that the
screen is locked.
There is also the possibility to use the systemd
dependencies of a system-wide target need to be installed system-wide as well.
This means that one has one global screen locking target and one has to supply
DISPLAY=:0 in order to actually get it to lock the screen. This is not very
With KDE, the screen locking is done within the compositor KWin itself. See Martin Gräßlin's blog post. This means that trying to kill the screen locker will be killing the session and that takes down any open programs. Trying to kill the screen locker will always log out the user. Also there is no need to have some auxiliary program running that listens on the suspend event. If you see windows, you know that KWin is running and that it will lock the screen.
With KDE, one just does not have to think about the screen locking (just like almost everybody else). It is very comforting to know that screen locking just works.
Network Interface Management
Awesome WM is not a full desktop environment, therefore it does not come with a
bunch of handy widgets that take care of everything. You need to start your own
network control applet. This might be the case because a lot of people who use
Awesome WM do not use Network Manager or perhaps have a wired connection only.
Either way, I will have to start
nm-applet at the beginning of my session
such that I can configure the wireless connection.
Sometimes this applet crashes or the indicator is not visible any more. Then I
have to execute
killall nm-applet and
nm-applet &. This is annoying. Also
the classic GTK style applet does not look that good.
KDE Plasma just has a network widget, it just works. Wonderful.
Keyboard Layout Setup
Keyboard setup on Linux is also incredible strange. This is also because of the X server. At the time the protocol was designed, it was assumed that people had exactly one keyboard and there was hot hot-plug of input devices. The one keyboard that was attached at boot would stay there the whole time. With my laptop, I have the internal keyboard and the external keyboard that I attach by setting the laptop into the docking station.
Whenever a new keyboard is attached, its layout will be the default layout. Any
changed made with
setxkbmap will be lost once the keyboard is removed again.
This means that I need a little shell script calling
setxkbmap … every time a
new keyboard is attached. This happens after actually plugging in a keyboard,
but waking up from suspend also means that the keyboards get recognized by the
With Awesome WM, I have
xss-lock start a shell script that then calls the
i3lock. This is called such that it stays in the foreground
and the shell script remains active. After I have unlocked (which is after
waking up the computer), the script will call the script with
On KDE, you just set a tick at "Capslock as Control" and you never ever have to think about it again. You are never greeted with a non-mapped capslock. It just works every time.
KDE has a built-in widget for the battery. It is only shown in case there actually is a battery. And if the battery is running low, you will get a warning. Normal stuff.
Awesome WM, being just a window manager, has nothing to do with that. You have
to enable your own battery widget, if you want one. Then you also have to write
a script that detects if the battery is running low. In case that script does
not run any more, you will not get any warning. So perhaps run it with
KDE could even shut down your machine at some critical level, if you would like
that. With Awesome WM you would have to write that yourself, although a call to
systemctl poweroff is not that hard.
Powering the System Down
KDE has a graphical menu and a keyboard shortcut to shut the system down. With
Awesome MW I would have to write my own keyboard shortcut that would call
systemctl poweroff. But that only works on systemd distributions (which are
virtually all now), not without systemd. KDE has this abstracted for me, it
KDE Programs Work a Bit Better
For some reason, a couple KDE programs will not start well on Awesome WM. For
kmix I try to get around that by using the following:
env XDG_CURRENT_DESKTOP= kmix
Another issue are the icons, it was
suggested to use the
env QT_QPA_PLATFORMTHEME=generic klipper
Points for Awesome WM
To no surprise, the window management in Awesome WM is better suited for my needs. All windows get tiled automatically in various layouts. One can move the windows around with the keyboard.
On KDE, you usually move the windows around with the mouse. Bumping a window to the top maximizes it, to the side halves it, into the corner makes it take quarter of the screen. That is nice, but not as slick as Awesome WM.
The order of the windows in the window switcher, usually
Tab, is by
the last activation. On Awesome WM, you go move forward and backwards in the
tiled windows. It is trivial to know where you will go. Selecting a certain
window can be done without looking at some pop-up window.
Independent Work Spaces on Displays
In KDE, you have multiple work spaces. They include all the screens. Switching the work space will switch it on all displays at the same time. This means you cannot simply have a browser open on one screen and go through the spaces on a different screen. A remedy it to make a window sticky such that it persists on all work spaces on that display.
Awesome WM has distinct work spaces per display. This is really cool as you can then mix and match the work spaces on the left and right displays.
This probably is a personal preference. If you like the way it works on KDE
better, you could change the
rc.lua in Awesome WM and get the same behavior.
I'd yet have to find the option in KDE to give me separate work spaces per
KDE needs a couple ten seconds to start up. This loads a lot of Qt and KDE libraries, so your programs start faster later on. And you only do that a few times per day, so that is not really a big issue.
Awesome WM is just started within a second. But then you need to have a script to load network manager, screen lock event listener, and set your keyboard layout.
Usage of Screen Estate
With KDE, all the windows usually have a decoration. You need that in order to move them around with the mouse. You can disable that though and just manipulate the windows using a special key on the keyboard and the mouse.
Awesome WM by default shows a one pixel wide border around the windows to mark them active or inactive. The status bar (at the top by default) is just very thin, you get the most out of your screen.
KDE is so customizable that you can pretty much the same experience in this regard.
Configuration File is a Program
The options in KDE are all graphical buttons you can click on in the system settings. It is discoverable, you can just browse through the options. In case you want something that is not in the options, you are stuck.
Awesome WM uses a configuration file in Lua. With that you can do pretty much whatever you can imagine. It takes a while to skim through the documentation of Lua and also the Awesome WM libraries. Then you can do interesting things like quickly programming your own widgets (in KDE programming widgets is probably not that hard either), set up the work space depending on things like display count, or network hostname.
The downside is that you must tinker if you even want a battery widget, there is none by default.