git.lucas.co / cce-compositor
Wayland compositor (wlroots)
git clone https://git.lucas.co/cce-compositor.git

commit2eaaee09b0b932777bb867c16d4f5c0c7c88fc32
parent7077660c50
authorLucas Galante <[email protected]>
date2026-06-29 23:11
Support backplate_corner_radius and fix CSD blur override on scaled outputs in compositor

 src/server/config.rs |  3 +++
 src/server/window.rs | 10 ++--------
 2 files changed, 5 insertions(+), 8 deletions(-)

diff --git a/src/server/config.rs b/src/server/config.rs
index 67bb95f..858b84b 100644
--- a/src/server/config.rs
+++ b/src/server/config.rs
@@ -32,6 +32,7 @@ pub struct Layout {
     pub grid_gap: i32,
     pub border_blur: bool,
     pub window_blur: bool,
+    pub backplate_corner_radius: i32,
     pub overlay_behavior: String,
     pub overlay_width: i32,
     pub overlay_position: String,
@@ -77,6 +78,7 @@ impl Default for Layout {
             grid_gap: 18,
             border_blur: false,
             window_blur: false,
+            backplate_corner_radius: 12,
             overlay_behavior: "inline".to_string(),
             overlay_width: 360,
             overlay_position: "left".to_string(),
@@ -1264,6 +1266,7 @@ pub fn parse_config(path: &str, state: &mut crate::window_manager::WindowManager
     state.layout.grid_gap = config.layout.grid_gap as i32;
     state.layout.border_blur = false;
     state.layout.window_blur = config.surfaces.backplate_blur > 0.001;
+    state.layout.backplate_corner_radius = config.surfaces.backplate_corner_radius as i32;
     state.layout.overlay_behavior = config.layout.overlay_behavior;
     state.layout.overlay_width = config.layout.overlay_width as i32;
     state.layout.overlay_position = config.layout.overlay_position;
diff --git a/src/server/window.rs b/src/server/window.rs
index b5c99f3..56fadea 100644
--- a/src/server/window.rs
+++ b/src/server/window.rs
@@ -1531,13 +1531,7 @@ impl Window {
         ffi::wlr_scene_node_set_enabled(self.popup_tree as *mut ffi::wlr_scene_node, enabled);
 
         if enabled {
-            let mut blur_enabled = requested.blur;
-            if !self.wm_requested.ssd {
-                let (dec_w, dec_h) = self.get_decorations_size();
-                if dec_w > 0 || dec_h > 0 {
-                    blur_enabled = false;
-                }
-            }
+            let blur_enabled = requested.blur;
             let app_id = self.get_app_id_string().unwrap_or_default();
             let mut ignore_transparent = (*self.server).wm.layout.window_backdrop_blur_ignore_transparent;
             if app_id.starts_with("cce-status") {
@@ -1551,7 +1545,7 @@ impl Window {
                 let h = self.rendering_sent.height as i32;
                 w.min(h) / 2
             } else {
-                0
+                (*self.server).wm.layout.backplate_corner_radius
             };
 
             ffi::river_scene_node_set_corner_radius(