Wayland compositor (wlroots)
git clone https://git.lucas.co/cce-compositor.git
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(