aboutsummaryrefslogtreecommitdiff
path: root/src/window
diff options
context:
space:
mode:
authorIvan Molodetskikh <yalterz@gmail.com>2024-05-01 19:06:08 +0400
committerIvan Molodetskikh <yalterz@gmail.com>2024-05-02 14:27:53 +0400
commit42cef79c699c0f03b4bb99c4278169c48d9a5bd0 (patch)
tree630d18b49f3d93603a79bcfc5734dc773c6d0cb6 /src/window
parentd86df5025cfd26ef4a3c48acd8ee80555265ee53 (diff)
downloadniri-42cef79c699c0f03b4bb99c4278169c48d9a5bd0.tar.gz
niri-42cef79c699c0f03b4bb99c4278169c48d9a5bd0.tar.bz2
niri-42cef79c699c0f03b4bb99c4278169c48d9a5bd0.zip
Implement rounded window corners
Diffstat (limited to 'src/window')
-rw-r--r--src/window/mod.rs16
1 files changed, 15 insertions, 1 deletions
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<f32>,
+ /// Corner radius to assume this window has.
+ pub geometry_corner_radius: Option<CornerRadius>,
+
+ /// Whether to clip this window to its geometry, including the corner radius.
+ pub clip_to_geometry: Option<bool>,
+
/// Whether to block out this window from certain render targets.
pub block_out_from: Option<BlockOutFrom>,
}
@@ -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);
}