This effect rounds the corners of your windows and adds an outline around them without much affecting the performance of the KDE Plasma desktop (see #49 and #50).
This effect started as a fork of shapecorners with some additional contributions in Alex47's project, then I optimized and reimplemented the effect with shaders with influences from the invert effect.
I maintain this effect on KDE Plasma desktop version 5.27 to 6.4+ in various Linux distros (See tests).
- Compatibility of the effect with other effects like Wobbly windows
- Compatibility with KWin for Plasma versions 5.27 to 6.4
- Compatibility with HDR in Plasma 6.0
- Optimize the effect to render once instead of 5 times - see #49
- Smooth animation when a window moves to an active state
- Reimplementation with shaders, including shadows at corners and two outlines
- Ability to disable effect when windows get maximized or tiled
- Cleanups for the plugin logic, remove unneeded dependencies from CMakeLists.txt file - by alex1701c
- Separate outline color for active and inactive windows - by OrkenWhite
- Support for language translations - by VictorR2007 (See How to add more translations?)
Copr package at matinlotfali/KDE-Rounded-Corners
sudo dnf copr enable matinlotfali/KDE-Rounded-Corners
sudo dnf update
sudo dnf install kwin-effect-roundcornersAUR package by xiota
sudo pamac build kwin-effect-rounded-corners-gitNixOS package by flexagoon
nix-env -iA nixos.kde-rounded-cornersDownload .deb or .rpm packages from above and install them using commands:
sudo dpkg -i ./kwin4_effect_shapecorners_debian.deb # for debian and kubuntu
sudo dnf install ./kwin4_effect_shapecorners_fedora42.rpm # for fedora
sudo zypper install ./kwin4_effect_shapecorners_tumbleweed.rpm # for opensuse tumbleweedYou need to install development packages for your distribution first:
Debian based (Ubuntu, Kubuntu, KDE Neon)
- Plasma 6
sudo apt install git cmake g++ extra-cmake-modules kwin-dev qt6-base-private-dev qt6-base-dev-tools libkf6kcmutils-dev
- Plasma 5 - by alex47:
sudo apt install git cmake g++ extra-cmake-modules kwin-dev libkf5configwidgets-dev
Fedora
- Plasma 6 (Fedora 40 and later)
sudo dnf install git cmake gcc-c++ extra-cmake-modules kwin-devel kf6-kconfigwidgets-devel libepoxy-devel kf6-kcmutils-devel kf6-ki18n-devel qt6-qtbase-private-devel wayland-devel libdrm-devel
- Plasma 5 (Fedora 39)
sudo dnf install git cmake gcc-c++ extra-cmake-modules kwin-devel kf5-kconfigwidgets-devel kf5-ki18n-devel libepoxy-devel
Arch - by https://github.com/hexa-one
sudo pacman -S git cmake extra-cmake-modules base-devel
yay -S qt5-toolsOpenSUSE - by https://github.com/mathiasgredal, https://github.com/Richardsause, and https://github.com/aaronkirschen
- Plasma 6 (by https://github.com/aaronkirschen)
sudo zypper in git cmake gcc-c++ kf6-kconfigwidgets-devel kf6-kcmutils-devel kwin6-devel kf6-kwindowsystem-devel qt6-quick-devel qt6-core-private-devel - Plasma 5 (by https://github.com/mathiasgredal, https://github.com/Richardsause)
sudo zypper install git cmake gcc-c++ extra-cmake-modules libqt5-qttools-devel kconfigwidgets-devel kwindowsystem-devel kguiaddons-devel ki18n-devel knotifications-devel kwin5-devel libQt5Gui-devel libQt5OpenGL-devel libepoxy-devel libqt5-qtnetworkauth-devel
Void - by https://github.com/lay-by and https://github.com/tre-flip
xbps-install git cmake make extra-cmake-modules gettext-devel kwin-devel kf6-kconfigwidgets-devel kf6-kcmutils-develThen clone the source code and compile it:
git clone https://github.com/matinlotfali/KDE-Rounded-Corners
cd KDE-Rounded-Corners
mkdir build
cd build
cmake ..
cmake --build . -j
sudo make installTo activate the effect, you can now log out and log back in, or run the command below inside the build directory:
sh ../tools/load.shTo fully uninstall the effect, run the following commands inside the build directory:
sh ../tools/unload.sh
sudo make uninstallAfter each KWin package update, the effect becomes incompatible. So it won't load without a rebuild.
As long as the effect is not part of the KWin yet (being discussed
here), you can automate the re-installation by running the command
below inside the build directory:
sh ../tools/install-autorun-test.shThe command above adds a .desktop file inside the autorun directory which checks if the effect is still compatible,
If it is incompatible, the script will automatically rebuild and reinstall the effect.
Note
The script uses qdbus to show a progress bar. On Plasma 6, it is not installed by default. You need to manually install the package qtchooser.
You can change the corner radius, outlines, exclusions, and more in:
System Settings → Workspace Behavior → Desktop Effects → Rounded Corners
Translations are stored in po/<lang>/kcmcorners.po. One can copy from other languages and start editing it in a different subdirectory of po.
If the kcm.ui changes, a new language template .pot can be generated by running the script tools/generate-messages.sh.
If using Breeze (default) window decorations with Plasma 5.27 or higher you may wish to disable the native window outline, to prevent it from overlapping and causing visual glitches.
System settings → Themes → Window Decorations → Breeze → Edit icon → Shadows and Outline tab → Outline intensity (Off)
Alternatively, you can use the command below:
kwriteconfig6 --file breezerc --group Common --key OutlineIntensity "OutlineOff"
qdbus-qt6 org.kde.KWin /KWin reconfigureYou can add shadows for specific windows using the hack below. I don't know how to enforce it in my code.
-
In [ System settings ] → [ Window management ] → [ Window rules ] → [ Appearance & Fixes ]:
Add [steam] and set [ No titlebar ] and frame to [ No ]
-
In [ System settings ] → [ Application Style ] → [ Window decoration ] → [ Breeze theme setting ] → [ Window specific overrides ]:
Add [steam] and set [ Hide Window title bar ] to [ Yes ].
After that, the Steam window gets its shadows back.
When troubleshooting or reporting an issue, it might be useful to enable Debug logs during the build time using:
cmake .. --DCMAKE_BUILD_TYPE=Debug
cmake --build . -jAfter the installation and loading the effect, debug messages would appear in journalctl:
journalctl -f | grep kwinor have some colorful logs with
sh ../tools/show-kwin-logs.sh

