From 42cef79c699c0f03b4bb99c4278169c48d9a5bd0 Mon Sep 17 00:00:00 2001 From: Ivan Molodetskikh Date: Wed, 1 May 2024 19:06:08 +0400 Subject: Implement rounded window corners --- src/window/mod.rs | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) (limited to 'src/window') diff --git a/src/window/mod.rs b/src/window/mod.rs index 90a6fb2c..3af9eebd 100644 --- a/src/window/mod.rs +++ b/src/window/mod.rs @@ -1,4 +1,4 @@ -use niri_config::{BlockOutFrom, BorderRule, Match, WindowRule}; +use niri_config::{BlockOutFrom, BorderRule, CornerRadius, Match, WindowRule}; use smithay::reexports::wayland_protocols::xdg::shell::server::xdg_toplevel; use smithay::wayland::compositor::with_states; use smithay::wayland::shell::xdg::{ @@ -61,6 +61,12 @@ pub struct ResolvedWindowRules { /// Extra opacity to draw this window with. pub opacity: Option, + /// Corner radius to assume this window has. + pub geometry_corner_radius: Option, + + /// Whether to clip this window to its geometry, including the corner radius. + pub clip_to_geometry: Option, + /// Whether to block out this window from certain render targets. pub block_out_from: Option, } @@ -112,6 +118,8 @@ impl ResolvedWindowRules { }, draw_border_with_background: None, opacity: None, + geometry_corner_radius: None, + clip_to_geometry: None, block_out_from: None, } } @@ -190,6 +198,12 @@ impl ResolvedWindowRules { if let Some(x) = rule.opacity { resolved.opacity = Some(x); } + if let Some(x) = rule.geometry_corner_radius { + resolved.geometry_corner_radius = Some(x); + } + if let Some(x) = rule.clip_to_geometry { + resolved.clip_to_geometry = Some(x); + } if let Some(x) = rule.block_out_from { resolved.block_out_from = Some(x); } -- cgit