KDE-Rounded-Corners
此效果会圆化窗口边角,并在其周围添加轮廓线,同时几乎不影响 KDE Plasma 桌面的性能(参见 #49 和 #50)。
此效果最初是 shapecorners 的一个分支,并包含来自 Alex47 的项目 的一些额外贡献,随后使用着色器进行了优化和重新实现,并受到了 invert effect 的影响。
此效果在 5.27 到 6.6+ 版本的 KDE Plasma 桌面以及各类 Linux 发行版中均得到维护(查看测试)。

已测试配置 + 下载链接(.deb、.rpm)
贡献:
- 与 Wobbly windows 等其他效果的兼容性
- 与 Plasma 5.27 至 6.7+ 版本 KWin 的兼容性
- 与 Plasma 6.0 中 HDR 的兼容性
- 从 6.4 版本开始与拆分后的 KWin 代码库依赖的兼容性 - 参见 #383
- 优化效果,使其渲染一次而非五次 - 参见 #49
- 窗口移动到激活状态时的平滑动画
- 使用着色器重新实现,包括角落阴影和三个轮廓
- 在窗口最大化或平铺时禁用效果的功能
- 清理插件逻辑,从 CMakeLists.txt 文件中移除不必要的依赖 - 由 alex1701c
- 为激活和非激活窗口设置独立的轮廓颜色 - 由 OrkenWhite
- 支持语言翻译 - 由 VictorR2007 (参见 如何添加更多翻译?)
- Squircle 圆角形状 - 由 zxsleebu (参见 #503)
如何使用非官方仓库安装
Copr 软件包位于 matinlotfali/KDE-Rounded-Corners
sudo dnf copr enable matinlotfali/KDE-Rounded-Corners
sudo dnf install kwin-effect-roundcorners # or kwin-effect-roundcorners-x11
AUR 软件包,由 xiota
sudo pamac build kwin-effect-rounded-corners-git # or kwin-effect-rounded-corners-x11-git
NixOS 软件包,由 flexagoon
nix-env -iA nixos.kde-rounded-corners
如何从源代码构建
首先,您需要为发行版安装开发包:
基于 Debian 的发行版(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 libdrm-dev - Plasma 5 - 由 alex47 提供:
sudo apt install git cmake g++ extra-cmake-modules kwin-dev libkf5configwidgets-dev
Fedora
- Plasma 6(Fedora 40 及更高版本)
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 - 由 hexa-one 提供
- Plasma 6
sudo pacman -S git cmake extra-cmake-modules base-devel vulkan-headers - Plasma 5
sudo pacman -S git cmake extra-cmake-modules base-devel yay -S qt5-tools
OpenSUSE
- Plasma 6(由 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(由 mathiasgredal、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
xbps-install git cmake make extra-cmake-modules gettext-devel kwin-devel kf6-kconfigwidgets-devel kf6-kcmutils-devel
然后克隆源代码并编译:
git clone https://github.com/matinlotfali/KDE-Rounded-Corners
cd KDE-Rounded-Corners
mkdir build
cd build
cmake ..
cmake --build . -j
sudo make install
为 X11 构建
如果你是为 X11 构建,请使用命令 cmake .. -DKWIN_X11=ON 而不是 cmake ..
为 KDE Linux 发行版构建
在为 KDE Linux 或其他不提供诸如 rpm-ostree 等工具的不可变发行版进行构建时,你无法写入诸如 /usr 这样的系统路径。要在这样的环境中部署插件,你需要将其构建到用户覆盖层中,并使用 systemd-sysext 激活它。
为了确保插件安装在 KWin 预期的正确目录结构下,请使用
cmake .. \
-DCMAKE_INSTALL_PREFIX=~/kde/usr \
-DKDE_INSTALL_PLUGINDIR=lib/qt6/plugins
而不是 cmake ..,并且使用 make install 而不是 sudo make install。
构建完成后,你可以将覆盖层放置在 ~/kde 下,并将其链接到 /var/lib/extensions/kde,systemd-sysext 期望扩展根目录位于此处。以下命令可以自动化该过程:
sh ../tools/deploy-to-overlay.sh
这样,插件将以 systemd-sysext 能够识别和加载的形式安装,同时仍保持不可变根文件系统的完整性。
如何加载或卸载效果
要激活该效果,您现在可以注销并重新登录,或在 build 目录中运行以下命令:
sh ../tools/load.sh
要完全卸载该效果,请在 build 目录中运行以下命令:
sh ../tools/unload.sh
sudo make uninstall
如何在 KWin 更新后自动安装
每次 KWin 软件包更新后,该效果都会变得不兼容。因此,如果不重新构建,它将无法加载。
只要该效果尚未成为 KWin 的一部分(正在
此处讨论),您就可以通过在 build 目录中运行以下命令
来自动化重新安装过程:
sh ../tools/install-autorun-test.sh
上述命令会在 autorun 目录内添加一个 .desktop 文件,用于检查该效果是否仍然兼容,
如果不再兼容,脚本将自动重新构建并重新安装该效果。
[!NOTE] 该脚本使用
qdbus来显示进度条。在 Plasma 6 中,它默认未安装。您需要手动安装软件包qtchooser。
如何调整其设置
您可以在以下位置更改圆角半径、轮廓、排除项等:
系统设置 → 工作区行为 → 桌面效果 → 圆角
额外提示
如何为翻译添加更多语言
翻译存储在 po/<lang>/kcmcorners.po 中。您可以从其他语言复制,并在 po 的不同子目录中开始编辑。
如果 kcm.ui 发生变化,可以通过运行脚本 tools/generate-messages.sh 生成新的语言模板 .pot。
如何为无装饰的窗口(如 Steam)添加阴影
您可以使用以下技巧为特定窗口添加阴影。
-
在 [ 系统设置 ] → [ 窗口管理 ] → [ 窗口规则 ] → [ 外观与修复 ] 中:
添加 [steam] 并将 [ 无标题栏 ] 和边框设置为 [ 否 ]
-
在 [ 系统设置 ] → [ 应用程序样式 ] → [ 窗口装饰 ] → [ Breeze 主题设置 ] → [ 特定窗口覆盖 ] 中:
添加 [steam] 并将 [ 隐藏窗口标题栏 ] 设置为 [ 是 ]。
之后,Steam 窗口将恢复其阴影。
如何添加调试消息
在排查问题或报告问题时,使用以下方法在构建期间启用调试日志可能很有用:
cmake .. -DCMAKE_BUILD_TYPE=Debug
cmake --build . -j
您可能还需要在 ~/.config/QtProject/qtlogging.ini 中添加 default.debug=true 规则。文件内容的示例如下:
[Rules]
*.debug=false
qt.qpa.xcb.xcberror.warning=false
default.debug=true
安装并加载效果后,调试消息将显示在 journalctl 中:
journalctl -f | grep kwin
或者拥有一些彩色的日志
sh ../tools/show-kwin-logs.sh