Fork of the Plasma 6 blur effect with additional features (including force blur) and bug fixes.
C++
704
1,137 commits
updated Oct 13, 2026
Better Blur DX is a loose continuation of Better Blur - a fork of the Plasma 6 blur effect with additional features and bug fixes.
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.
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).
Tagged releases:
Wayland:
yay -S kwin-effects-better-blur-dx
X11:
yay -S kwin-effects-better-blur-dx-x11
-git packages tracking the main branch:
Wayland:
yay -S kwin-effects-better-blur-dx-git
X11:
yay -S kwin-effects-better-blur-dx-x11-git
(Or use your AUR helper of choice instead of yay)
eselect repository enable xarblu-overlay
emerge --sync xarblu-overlay
emerge --ask kde-misc/kwin-effects-better-blur-dx
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-x11
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.
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
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
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
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.sh
By 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.
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.rpm
Rerun the build script when rebuilding the effect.
This effect conflicts with the default KWin blur effect (and other effects replacing it).
The window needs to be translucent in order for the blur to be visible. This can be done in multiple ways:
The classes of windows to blur can be specified in the effect settings. You can obtain them in two ways:
qdbus org.kde.KWin /KWin org.kde.KWin.queryWindowInfo and click on the window. You can use either resourceClass or resourceName.This effect has some compatibility issues with some other effects.
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.
40 followers · starred Dec 2025
158 followers · starred Feb 2026
1,001 followers · starred Jan 2026
227 followers · starred Feb 2026
Fork of the Plasma 6 blur effect with additional features (including force blur) and bug fixes.
C++
704
1,137 commits
updated Oct 13, 2026
Better Blur DX is a loose continuation of Better Blur - a fork of the Plasma 6 blur effect with additional features and bug fixes.
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.
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).
Tagged releases:
Wayland:
yay -S kwin-effects-better-blur-dx
X11:
yay -S kwin-effects-better-blur-dx-x11
-git packages tracking the main branch:
Wayland:
yay -S kwin-effects-better-blur-dx-git
X11:
yay -S kwin-effects-better-blur-dx-x11-git
(Or use your AUR helper of choice instead of yay)
eselect repository enable xarblu-overlay
emerge --sync xarblu-overlay
emerge --ask kde-misc/kwin-effects-better-blur-dx
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-x11
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.
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
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
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
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.sh
By 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.
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.rpm
Rerun the build script when rebuilding the effect.
This effect conflicts with the default KWin blur effect (and other effects replacing it).
The window needs to be translucent in order for the blur to be visible. This can be done in multiple ways:
The classes of windows to blur can be specified in the effect settings. You can obtain them in two ways:
qdbus org.kde.KWin /KWin org.kde.KWin.queryWindowInfo and click on the window. You can use either resourceClass or resourceName.This effect has some compatibility issues with some other effects.
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.
40 followers · starred Dec 2025
158 followers · starred Feb 2026
1,001 followers · starred Jan 2026
227 followers · starred Feb 2026