diff --git a/libs/hbb_common/src/platform/linux.rs b/libs/hbb_common/src/platform/linux.rs
index 5e03b6816..60c8714d8 100644
--- a/libs/hbb_common/src/platform/linux.rs
+++ b/libs/hbb_common/src/platform/linux.rs
@@ -7,6 +7,9 @@ lazy_static::lazy_static! {
pub const DISPLAY_SERVER_WAYLAND: &str = "wayland";
pub const DISPLAY_SERVER_X11: &str = "x11";
+pub const DISPLAY_DESKTOP_KDE: &str = "KDE";
+
+pub const XDG_CURRENT_DESKTOP: &str = "XDG_CURRENT_DESKTOP";
pub struct Distro {
pub name: String,
@@ -29,6 +32,15 @@ impl Distro {
}
}
+#[inline]
+pub fn is_kde() -> bool {
+ if let Ok(env) = std::env::var(XDG_CURRENT_DESKTOP) {
+ env == DISPLAY_DESKTOP_KDE
+ } else {
+ false
+ }
+}
+
#[inline]
pub fn is_gdm_user(username: &str) -> bool {
username == "gdm"
diff --git a/libs/scrap/src/wayland/pipewire.rs b/libs/scrap/src/wayland/pipewire.rs
index 640f37d0b..2f1e2a852 100644
--- a/libs/scrap/src/wayland/pipewire.rs
+++ b/libs/scrap/src/wayland/pipewire.rs
@@ -27,39 +27,40 @@ use super::screencast_portal::OrgFreedesktopPortalScreenCast as screencast_porta
use lazy_static::lazy_static;
lazy_static! {
- pub static ref RDP_RESPONSE: Mutex