Better Blur DX is a loose continuation of Better Blur - a fork of the Plasma 6 blur effect with additional features and bug fixes.
- Force blur
- Adjustable blur brightness, contrast and saturation
- Adjustable corner radius
- Refraction
You may notice these are less features than the original Better Blur. Notably "Static Blur" is currently missing because it wasn't trivially portable to the Plasma 6.5 blur and needs to be reimplemented.
Fixes for blur-related Plasma bugs that haven't been patched yet.
- Blur may sometimes disappear during animations
- Transparent color schemes don't work properly with the Breeze application style
Better Blur DX should always work on the current stable version of Plasma. Older versions aren't tested much besides a basic "it compiles" and may or may not work.
Currently supported versions: 6.5, 6.6, 6.7
While building the effect is supported for both X11 and Wayland, X11 is more or less deprecated and not tested much.
Thus the X11 version of the effect needs to be explicitly built using the -DBBDX_X11=ON cmake option.
We'll see how feasible maintaining the X11 version is for future Plasma releases as it seems like KWin X11 doesn't see any API changes since version 6.5 meaning the Wayland and X11 will keep drifting apart.
Important
If the effect stops working after a system upgrade, you will need to rebuild it or reinstall the package. The effect only works for the exact KWin version it was built for. Additionally KWin needs to be restarted (e.g. via logout+login) to load an updated version of the effect (the initial install doesn't need this).
Arch Linux AUR (maintained by https://github.com/D3SOX)
Tagged releases:
Wayland:
yay -S kwin-effects-better-blur-dxX11:
yay -S kwin-effects-better-blur-dx-x11-git packages tracking the main branch:
Wayland:
yay -S kwin-effects-better-blur-dx-gitX11:
yay -S kwin-effects-better-blur-dx-x11-git(Or use your AUR helper of choice instead of yay)
Gentoo (maintained by me - https://github.com/xarblu)
eselect repository enable xarblu-overlay
emerge --sync xarblu-overlay
emerge --ask kde-misc/kwin-effects-better-blur-dxFedora COPR (maintained by https://github.com/Infinality)
Details: https://copr.fedorainfracloud.org/coprs/infinality/kwin-effects-better-blur-dx/
dnf copr enable infinality/kwin-effects-better-blur-dx
dnf install kwin-effects-better-blur-dx
dnf install kwin-effects-better-blur-dx-x11NixOS (flakes)
flake.nix:
{
inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
kwin-effects-better-blur-dx = {
url = "github:xarblu/kwin-effects-better-blur-dx";
inputs.nixpkgs.follows = "nixpkgs";
};
};
}{ inputs, pkgs, ... }:
{
environment.systemPackages = [
inputs.kwin-effects-better-blur-dx.packages.${pkgs.system}.default # Wayland
inputs.kwin-effects-better-blur-dx.packages.${pkgs.system}.x11 # X11
];
}Note
On Fedora Kinoite and other distributions based on it, the effect must be built in a container.
- CMake
- Extra CMake Modules
- Plasma 6
- Qt 6
- KF6
- KWin development packages
Arch Linux
Wayland:
sudo pacman -S base-devel git extra-cmake-modules qt6-tools kwin
X11:
sudo pacman -S base-devel git extra-cmake-modules qt6-tools kwin-x11
Debian-based (KDE Neon, Kubuntu, Ubuntu)
Wayland:
sudo apt install -y git cmake g++ extra-cmake-modules qt6-tools-dev kwin-dev libkf6configwidgets-dev gettext libkf6crash-dev libkf6globalaccel-dev libkf6kio-dev libkf6service-dev libkf6notifications-dev libkf6kcmutils-dev libkdecorations3-dev libxcb-composite0-dev libxcb-randr0-dev libxcb-shm0-dev libxcb-res0-dev libxcb-sync-dev
X11:
sudo apt install -y git cmake g++ extra-cmake-modules qt6-tools-dev kwin-x11-dev libkf6configwidgets-dev gettext libkf6crash-dev libkf6globalaccel-dev libkf6kio-dev libkf6service-dev libkf6notifications-dev libkf6kcmutils-dev libkdecorations3-dev libxcb-composite0-dev libxcb-randr0-dev libxcb-shm0-dev libxcb-res0-dev libxcb-sync-dev
Fedora 41, 42
Wayland:
sudo dnf -y install git cmake extra-cmake-modules gcc-g++ kf6-kwindowsystem-devel plasma-workspace-devel libplasma-devel qt6-qtbase-private-devel qt6-qtbase-devel cmake kwin-devel extra-cmake-modules kwin-devel kf6-knotifications-devel kf6-kio-devel kf6-kcrash-devel kf6-ki18n-devel kf6-kguiaddons-devel libepoxy-devel kf6-kglobalaccel-devel kf6-kcmutils-devel kf6-kconfigwidgets-devel kf6-kdeclarative-devel kdecoration-devel kf6-kglobalaccel kf6-kdeclarative libplasma kf6-kio qt6-qtbase kf6-kguiaddons kf6-ki18n wayland-devel libdrm-devel
X11:
sudo dnf -y install git cmake extra-cmake-modules gcc-g++ kf6-kwindowsystem-devel plasma-workspace-devel libplasma-devel qt6-qtbase-private-devel qt6-qtbase-devel cmake extra-cmake-modules kf6-knotifications-devel kf6-kio-devel kf6-kcrash-devel kf6-ki18n-devel kf6-kguiaddons-devel libepoxy-devel kf6-kglobalaccel-devel kf6-kcmutils-devel kf6-kconfigwidgets-devel kf6-kdeclarative-devel kdecoration-devel kf6-kglobalaccel kf6-kdeclarative libplasma kf6-kio qt6-qtbase kf6-kguiaddons kf6-ki18n wayland-devel libdrm-devel kwin-x11-devel
openSUSE
Wayland:
sudo zypper in -y git cmake-full gcc-c++ kf6-extra-cmake-modules kcoreaddons-devel kguiaddons-devel kconfigwidgets-devel kwindowsystem-devel ki18n-devel kiconthemes-devel kpackage-devel frameworkintegration-devel kcmutils-devel kirigami2-devel "cmake(KF6Config)" "cmake(KF6CoreAddons)" "cmake(KF6FrameworkIntegration)" "cmake(KF6GuiAddons)" "cmake(KF6I18n)" "cmake(KF6KCMUtils)" "cmake(KF6KirigamiPlatform)" "cmake(KF6WindowSystem)" "cmake(Qt6Core)" "cmake(Qt6DBus)" "cmake(Qt6Quick)" "cmake(Qt6Svg)" "cmake(Qt6Widgets)" "cmake(Qt6Xml)" "cmake(Qt6UiTools)" "cmake(KF6Crash)" "cmake(KF6GlobalAccel)" "cmake(KF6KIO)" "cmake(KF6Service)" "cmake(KF6Notifications)" libepoxy-devel kwin6-devel
X11:
sudo zypper in -y git cmake-full gcc-c++ kf6-extra-cmake-modules kcoreaddons-devel kguiaddons-devel kconfigwidgets-devel kwindowsystem-devel ki18n-devel kiconthemes-devel kpackage-devel frameworkintegration-devel kcmutils-devel kirigami2-devel "cmake(KF6Config)" "cmake(KF6CoreAddons)" "cmake(KF6FrameworkIntegration)" "cmake(KF6GuiAddons)" "cmake(KF6I18n)" "cmake(KF6KCMUtils)" "cmake(KF6KirigamiPlatform)" "cmake(KF6WindowSystem)" "cmake(Qt6Core)" "cmake(Qt6DBus)" "cmake(Qt6Quick)" "cmake(Qt6Svg)" "cmake(Qt6Widgets)" "cmake(Qt6Xml)" "cmake(Qt6UiTools)" "cmake(KF6Crash)" "cmake(KF6GlobalAccel)" "cmake(KF6KIO)" "cmake(KF6Service)" "cmake(KF6Notifications)" libepoxy-devel kwin6-x11-devel
When building under normal conditions, simply clone the repo and run the included build script.
git clone https://github.com/xarblu/kwin-effects-better-blur-dx
cd kwin-effects-better-blur-dx
chmod +x build.sh
./build.shBy default, this will build and install the effect for the regular (Wayland) KWin.
To build a version for KWin X11, run the script with the --x11 flag.
Building on Fedora Kinoite
When building for Fedora Kinoite, run the build script with the --kinoite flag inside your container to generate the RPM package.
# enter container
git clone https://github.com/xarblu/kwin-effects-better-blur-dx
cd kwin-effects-better-blur-dx
chmod +x build.sh
./build.sh --kinoite
exit # exit container
sudo rpm-ostree install kwin-effects-better-blur-dx/build/kwin-better-blur-dx.rpmRerun the build script when rebuilding the effect.
This effect conflicts with the default KWin blur effect (and other effects replacing it).
- Install the plugin.
- Open the Desktop Effects page in System Settings.
- Disable any blur effects.
- Enable the Better Blur DX effect.
The window needs to be translucent in order for the blur to be visible. This can be done in multiple ways:
- Use a transparent theme for the program if it supports it
- Use a transparent color scheme, such as Alpha
- Create a window rule that reduces the window opacity
The classes of windows to blur can be specified in the effect settings. You can obtain them in two ways:
- Run
qdbus org.kde.KWin /KWin org.kde.KWin.queryWindowInfoand click on the window. You can use either resourceClass or resourceName. - Right click on the titlebar, go to More Options and Configure Special Window/Application Settings. The class can be found at Window class (application). If there is a space, for example Navigator firefox, you can use either Navigator or firefox.
This effect has some compatibility issues with some other effects.
- "Blur" from KWin - Because we effectively replace the KWin blur you shouldn't use both in parallel. Some windows might get double blurred and "look off" if you do.
- "Wobbly Windows" from KWin - We're blurring a square region behind the window. Either that square will bleed out of the deformed window or KWin will skip the blur entirely while the "wobble effect" is active.
This effect can be very resource-intensive if you have a lot of windows open. On Wayland, high GPU load may result in higher cursor latency or even stuttering. If that bothers you, set the following environment variable: KWIN_DRM_NO_AMS=1. If that's not enough, try enabling or disabling the software cursor by also setting KWIN_FORCE_SW_CURSOR=0 or KWIN_FORCE_SW_CURSOR=1.
Intel GPUs use software cursor by default due to this bug, however it doesn't seem to affect all GPUs.
- a-parhom/LightlyShaders - CMakeLists.txt files
- taj-ny/kwin-effects-forceblur - The original Better Blur
