
The project known as Kool Desktop Environment, announced over twenty years ago, aimed from the start to create a fully functional, customizable, and visually appealing desktop environment. Reading the initial manifesto by the project’s founder, Matthias Ettrich, about developing a self-sufficient work environment and looking at Plasma 5 today, one must commend the developers—for in the two decades since its inception, the project has stayed true to its original goal.
KDE is a highly flexible environment, divided into numerous nearly independent components that can be modified and rearranged. The Plasma desktop is entirely made up of widgets (also known as applets or plasmoids) that can adapt to different situations. The same widget can be placed on a panel, the desktop, an application dashboard, or completely removed and replaced with another. This feature, along with other characteristics of KDE, provides vast opportunities for customization.
Organizing the Panel
In “Plasma”, a panel on the edge of the screen functions as a widget itself. At the same time, the panel serves as an organizational tool, allowing you to keep other widgets visible and easily accessible when you need them.

The “Taskbar” widget and its minimalist version “Taskbar (Icons Only)” display currently running applications. The latter, however, saves a significant amount of space on the taskbar itself. Pinning icons of frequently used applications ensures quick access and launch when needed.

Other applications can easily be launched using the full-scale “Application Dashboard” (a reincarnation of Homerun for Qt 5). With the release of Plasma 5.10, it even includes widgets that can be installed simply by dragging and dropping them where needed. It also features buttons for shutdown, logging out, and restarting.

Global Menu Like macOS
The feature that allows you to place application menus on the panel was available in KDE 4, but it was missing for a long time in Plasma 5. It finally made a return in Plasma 5.9 with a new applet. However, a much better option is the more powerful Active Window Control widget.
Using a widget makes more sense if the desktop panel is positioned at the top of the screen. Its functionality allows for placing window control buttons, the program’s icon and title, as well as a menu on the panel. A wide array of customizable settings lets you decide which elements appear on the panel, under what conditions, and in what order.

I configured my settings so that when all windows are minimized, the taskbar displays the default text “Plasma Desktop.” You can change this text to anything you want or remove it entirely by entering a space in the relevant settings window. When a window of an active application is minimized, the taskbar shows the window’s title.
The widget settings allow you to modify the arrangement of the program name and open document title using an internal script. When you hover the mouse over the window title in the widget, the application menu is displayed instead of the title. When the active application’s window is expanded, control buttons for the current window are added to the window title, while the original title and buttons of the window itself are hidden.
Dock Functionality
In addition to the global menu, KDE has a reincarnation of another essential macOS feature—the dock with icons. The Latte Dock is a stylish alternative to the standard “Panel” widget. It offers numerous customization options for appearance and behavior and is available in many languages.

If you’re not worried about using extra resources, you can install the widget using a package manager on any popular distribution. However, since the project is under active development, it’s more reasonable to build the necessary packages from the source code available on the project’s GitHub.
Useful Keyboard Shortcuts for KDE
- Ctrl + Esc — open the system monitor;
- Ctrl + Alt + Esc — forcibly close an application;
- Alt + Space — launch KRunner;
- Ctrl + F12 — minimize all windows;
- Alt + Tab — cycle through open windows;
- Meta + Tab / Meta + Shift + Tab — switch between virtual desktops forward and backward;
- Ctrl + Alt + Shift + Page Up — restart the system without confirmation;
- Ctrl + Alt + Shift + Page Down — shut down the computer without confirmation.
Monitoring Widgets
It’s always helpful to keep track of how your machine’s resources are being used. Therefore, it makes perfect sense to add the “System Load” widget and the Thermal Monitor to your panel. The latter displays information read from the temperature sensors of your computer’s hardware. To make full use of them, you need to install the lm_sensors package on your system.

For monitoring network activity, there is a simple tool called Netspeed Widget developed by HessiJames. It tracks the speed on all network adapters and displays the maximum speed.

If you need information on the speed of each of your network connections (like Ethernet or Wi-Fi), then the standard Network Monitor widget is a good option. Besides configuring each network interface individually, it also allows for monitoring the WAN port on a router running DD-WRT firmware.
In my opinion, the Weather Widget by Martin Kotelnik (also known as clearmartin) is the most sensible among all the widgets in this category. It displays as a weather icon with the current air temperature on the panel. By clicking on it, you can open a window with a full forecast for several days. The forecast source can be either OpenWeatherMap or yr.no.

For those who find the standard digital clock and calendar lacking, Zren’s Event Calendar is a great alternative. This all-in-one applet features a clock, calendar, timer, task scheduler that syncs with Google, and an OpenWeatherMap weather forecast.

KDE’s Version of f.lux
When there’s not enough light, typically in the evening and nighttime, eye strain from working at a monitor increases significantly. To combat this, you can use Redshift. This application automatically reduces the display’s color temperature, giving the screen a warmer, yellowish hue in the evening.

You can manage the program using the Redshift Control widget. This widget allows you to turn Redshift on and off, configure modes, and adjust the screen’s color temperature on the fly by scrolling the mouse wheel over the widget icon.
System Tray
Application developers often have their own perspective on system tray icon design, resulting in a colorful mishmash of diverse icons that ends up looking like a string of Christmas lights.
Some applications allow you to change the default tray icon to one that better fits your overall theme. For others, the Hardcode-Tray script comes to the rescue. It can automatically detect the default theme, appropriate icon sizes, and applications that do not allow icon changes through standard methods, and it fixes these icons. If desired, you can restore everything to its original state.

To run the script, a modified version of sni-qt is required. Both it and the script itself can be installed using the package manager on Ubuntu:
$ sudo add-apt-repository ppa:andreas-angerer89/sni-qt-patched
$ sudo apt update
$ sudo apt install sni-qt sni-qt:i386 hardcode-tray
and Arch:
$ yaourt -S hardcode-tray sni-qt-patched-git lib32-sni-qt-patched-git # For the stable version of the script
$ yaourt -S hardcode-tray-git sni-qt-patched-git lib32-sni-qt-patched-git # For the unstable version of the script — it was recently localized to Russian
or manually by executing two commands:
$ cd /tmp
$ wget -O - https://raw.githubusercontent.com/bil-elmoussaoui/Hardcode-Tray/master/data/install.sh | bash
The Numix and Papirus icon themes contain all the necessary tray icons for the script to function. To apply the theme currently being used in the system, simply execute the command
$ hardcode-tray -a
You can restore the default system tray icons using the command
$ hardcode-tray -r
Drop-Down Terminal
No matter how advanced and intuitive a graphical interface may be, it can’t fully replace the command line. You might need it at any moment, and it’s inconvenient to waste time launching a terminal like Konsole every time.
The issue is addressed by Yakuake, a drop-down terminal emulator. When added to the system’s startup programs, it launches automatically as the system boots, and can be brought down with the F12 key whenever needed.
The emulator has been ported to Qt 5, allowing for customization of its appearance, including window transparency. If the transparency options are not sufficient, you can add the following to ~/.
:
fi
if [ `qdbus | grep org.kde.yakuake` ]; then
xprop -f _KDE_NET_WM_BLUR_BEHIND_REGION 32c -set _KDE_NET_WM_BLUR_BEHIND_REGION 0 -id `xwininfo -name Yakuake | grep "Yakuake" | sed 's/xwininfo: Window id: //g' | sed 's/"Yakuake"//g'`;
fi
fi
As a result, the window will not only be transparent but will also have a blur effect, making the text within it easier to read.

Yakuake allows users to ditch bulky graphical applications in favor of simple console-based ones. For example, you can listen to music using the straightforward Music On Console (mocp) or manage files and folders with root permissions using Midnight Commander (mc).
Dolphin and Yakuake
Using a script developed by Jesús Torres, you can integrate Dolphin with Yakuake. The script allows you to create a new session in Yakuake from the command line or by using a .desktop file.
The script can be set up in just a couple of steps. First, you need to install yakuake-session:
$ git clone https://github.com/aplatanado/yakuake-session.git
$ sudo cp yakuake-session /usr/bin
Then, add the action “Open Yakuake in this folder” in Dolphin:
$ cp ServiceMenus/yakuakehere.desktop ~/.local/share/kservices5/ServiceMenus/
Additionally, in Dolphin, you can add an action called “Open in Yakuake” to execute scripts and run executable files. I’ve already submitted a patch to the script’s author for this feature. But if the author doesn’t approve it or isn’t able to update their repository in time, here’s how you can implement it yourself.
Create a new text document and insert the following:
[Desktop Entry]
Type=Service
X-KDE-ServiceTypes=KonqPopupMenu/Plugin
MimeType=application/x-executable;
Actions=runInYakuake;
X-KDE-AuthorizeAction=shell_access
[Desktop Action runInYakuake]
TryExec=konsole
Exec=yakuake-session --hold -e %f
Icon=yakuake
Name=Run In Yakuake
Name[es]=Ejecutar en Yakuake
Name[ru]=Запустить в Yakuake
Comment=Run within Yakuake
Comment[es]=Ejecutar en Yakuake
Comment[ru]=Запустить в Yakuake
Save the document as yakuakerun.desktop in the ~/.
directory and make it executable. This will add the corresponding option to the Dolphin file manager’s menu.
Enabling Tiling
On a large monitor, it’s more convenient to use a tiling window manager. It divides the screen into non-overlapping rectangular sections, where application windows are arranged. You can manage these applications using keyboard shortcuts.
In Plasma 5, you can enable tiling directly in the standard KWin. It’s not difficult to do this by adding Fabian Homborg’s kwin-tiling script. All it takes is running three commands:
$ git clone https://github.com/faho/kwin-tiling.git
$ cd kwin-tiling/
$ plasmapkg2 --type kwinscript -i .
In the system settings, you need to enable the “Tiling Extension” option in the KWin window manager’s script settings section.

Once you configure tiling, you start to appreciate the absence of window titles and control buttons, which can be relocated to the top panel using the Active Window Control widget.
Displaying Command Line Output on the Desktop
In KDE 4, there was a widget that displayed the output of a console command, but it became non-functional with the transition to Qt 5 in Plasma 5. A user named crbble developed a widget called stdout5, replicating the original widget’s functionality. Its appearance needed some refinement, so I forked the project and made a few enhancements.
To install the widget, clone the project into the ~/.
directory.
$ cd ~/.local/share/plasma/plasmoids/
$ clone https://github.com/Jacobtey/stdOUT5
To operate the widget, you’ll also need to download and install a modified version of the qml-applauncher plugin.

The widget doesn’t process commands directly. Instead, you need to specify the path to a bash script in the command input line, where the commands to be executed are defined. You can place the script in your home directory. Don’t forget to make it executable.
KRunner Cheat Sheet
-
konsole
— launch an application; -
ls
— execute a console command and display the result;~/ Documents -
xakep.
— open a website in the browser;ru -
file:/
— open a directory in Dolphin;home/ -
smb:
— access shared folders on a Windows machine;WindowsHost -
Desktop
— switch between desktops;1 -
support@xakep.
— send an email;ru -
pause
,next
,play
— control the media player; -
date
,time
— get the current date or time; -
=
— use a calculator;sqrt( 4) + 32*sin( 30*pi/ 180) -
30
— convert Fahrenheit to Celsius;F -
220
— calculate resistance;V / 10 A = -
100
— convert dollars to rubles;USD in RUB -
spell
— check spelling;linux -
screen
— adjust screen brightness;brightness 100 -
sleep
— put the computer to sleep.
Customizing Your Theme
The introduction of the new Breeze theme in Plasma 5 has sparked much debate. Many users were critical of the developers for following the general trend towards flat interfaces. However, nothing stops you from restoring the Oxygen theme or installing any other theme of your choice. Personally, I didn’t find the default “Plasma” theme all that bad. I played around a bit with the color palette settings and achieved a result I was comfortable with.
For those interested in trying something new, I would recommend checking out the Arc KDE theme package created by the Papirus Development Team, which was founded by developers from our country. Inspired by the GTK theme of the same name, they’ve expanded it to not only style KDE components, but also Firefox, Telegram, Nylas N1 email client, VLC media player, and the Eclipse development environment in a unified look.

You can install the entire suite using pre-built packages for Ubuntu, Arch, Manjaro, openSUSE, or Arc KDE:
$ wget -qO- https://raw.githubusercontent.com/PapirusDevelopmentTeam/arc-kde/master/install-arc-kde-home.sh
And delete it if you don’t like it:
$ wget -qO- https://raw.githubusercontent.com/PapirusDevelopmentTeam/arc-kde/master/remove-arc-kde.sh | sh
Connecting with Android
Smartphones running Android have long surpassed personal computers in popularity, so seamless integration between these two worlds is no surprise. In fact, it’s something that should have been implemented if it wasn’t already. Fortunately, the KDE team has provided us with KDE Connect, which facilitates pairing a Linux computer with an Android smartphone (support for iOS is on the way—stay tuned).
KDE Connect needs to be installed on both your computer and smartphone. You can find the app on Google Play, so installation should be straightforward.
Upon the initial setup, it’s essential to scan the network and authorize the pairing of selected devices. Any device can initiate the pairing process. Subsequently, the connection will occur automatically whenever both devices are simultaneously present on the local network. The application in Plasma 5 includes its own widget that resides in the system tray, providing a convenient central point for managing and configuring the application.

Some of the standout features include accessing your smartphone’s file system from a computer, transferring files, receiving call and SMS notifications, replying to SMS messages, using your smartphone as a computer touchpad, and sending commands to the computer from your smartphone. The functionality of certain features may depend on your Android version.
Optimization
Criticisms of KDE’s performance can be easily dismissed by taking a few simple steps to reduce resource consumption.
- Disable file indexing by the Baloo search service.
- Turn off tooltips.
- Deactivate KRunner plugins. It’s a good idea to keep a couple of useful plugins, such as “Applications,” “Run programs,” and “Terminate applications.” Additionally, you can install the Translator plugin, which allows you to translate words and sentences directly in the KRunner window. Note that using this feature requires a Yandex.Passport to obtain an API Key.
- Disable desktop effects.
- Deactivate unused services.
Conclusions
When people ask me why, despite spending half my life on a computer, I don’t play video games, I tell them it’s because my computer runs Linux, which is a challenge in itself. Plasma 5 is like a highly advanced video game with numerous options. So, once I’ve finished configuring one thing, I immediately start looking for another area to tweak.

2022.06.01 — F#ck AMSI! How to bypass Antimalware Scan Interface and infect Windows
Is the phrase "This script contains malicious content and has been blocked by your antivirus software" familiar to you? It's generated by Antimalware Scan Interface…
Full article →
2023.02.21 — Pivoting District: GRE Pivoting over network equipment
Too bad, security admins often don't pay due attention to network equipment, which enables malefactors to hack such devices and gain control over them. What…
Full article →
2022.06.03 — Challenge the Keemaker! How to bypass antiviruses and inject shellcode into KeePass memory
Recently, I was involved with a challenging pentesting project. Using the KeeThief utility from GhostPack, I tried to extract the master password for the open-source KeePass database…
Full article →
2022.06.01 — WinAFL in practice. Using fuzzer to identify security holes in software
WinAFL is a fork of the renowned AFL fuzzer developed to fuzz closed-source programs on Windows systems. All aspects of WinAFL operation are described in the official documentation,…
Full article →
2022.02.15 — First contact: How hackers steal money from bank cards
Network fraudsters and carders continuously invent new ways to steal money from cardholders and card accounts. This article discusses techniques used by criminals to bypass security…
Full article →
2023.03.03 — Infiltration and exfiltration. Data transmission techniques used in pentesting
Imagine a situation: you managed to penetrate the network perimeter and gained access to a server. This server is part of the company's internal network, and, in theory, you could…
Full article →
2022.06.01 — Cybercrime story. Analyzing Plaso timelines with Timesketch
When you investigate an incident, it's critical to establish the exact time of the attack and method used to compromise the system. This enables you to track the entire chain of operations…
Full article →
2023.02.13 — Ethernet Abyss. Network pentesting at the data link layer
When you attack a network at the data link layer, you can 'leapfrog' over all protection mechanisms set at higher levels. This article will walk…
Full article →
2023.04.19 — Kung fu enumeration. Data collection in attacked systems
In penetration testing, there's a world of difference between reconnaissance (recon) and data collection (enum). Recon involves passive actions; while enum, active ones. During recon,…
Full article →
2022.06.01 — Quarrel on the heap. Heap exploitation on a vulnerable SOAP server in Linux
This paper discusses a challenging CTF-like task. Your goal is to get remote code execution on a SOAP server. All exploitation primitives are involved with…
Full article →