From 45e69543b3e2bd01f656132b8ce6f279bd7c9a80 Mon Sep 17 00:00:00 2001 From: Sergey Kharenko Date: Tue, 12 Aug 2025 19:27:46 +0800 Subject: [PATCH] fix: auto-detect KDE/Plasma and disable GTK CSD to fix titlebar button freeze (#4380) * fix: auto-detect KDE/Plasma and disable GTK CSD to fix titlebar button freeze * chore: update UPDATELOG --------- Co-authored-by: Tunglies <77394545+Tunglies@users.noreply.github.com> --- UPDATELOG.md | 1 + src-tauri/src/lib.rs | 18 +++++++++++++++++- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/UPDATELOG.md b/UPDATELOG.md index 28b2bf08..4b316e60 100644 --- a/UPDATELOG.md +++ b/UPDATELOG.md @@ -31,6 +31,7 @@ - 修复配置修改后缓存不同步问题 - 修复 Windows 安装器自启设置问题 - 修复 macOS 下 Dock 图标恢复窗口问题 +- 修复 linux 下 KDE/Plasma 异常标题栏按钮 - 修复架构升级后节点测速功能异常 - 修复架构升级后流量统计功能异常 - 修复架构升级后日志功能异常 diff --git a/src-tauri/src/lib.rs b/src-tauri/src/lib.rs index 11a42bba..264904c2 100644 --- a/src-tauri/src/lib.rs +++ b/src-tauri/src/lib.rs @@ -423,7 +423,23 @@ pub fn run() { // Set Linux environment variable #[cfg(target_os = "linux")] - std::env::set_var("WEBKIT_DISABLE_DMABUF_RENDERER", "1"); + { + std::env::set_var("WEBKIT_DISABLE_DMABUF_RENDERER", "1"); + + let desktop_env = std::env::var("XDG_CURRENT_DESKTOP").unwrap_or_default().to_uppercase(); + let is_kde_desktop = desktop_env.contains("KDE"); + let is_plasma_desktop = desktop_env.contains("PLASMA"); + + if is_kde_desktop || is_plasma_desktop { + std::env::set_var("GTK_CSD", "0"); + logging!( + info, + Type::Setup, + true, + "KDE detected: Disabled GTK CSD for better titlebar stability." + ); + } + } // Create and configure the Tauri builder let builder = app_init::setup_plugins(tauri::Builder::default())