aboutsummaryrefslogtreecommitdiff
path: root/src/layer/mod.rs
diff options
context:
space:
mode:
authorIvan Molodetskikh <yalterz@gmail.com>2025-01-21 09:40:00 +0300
committerIvan Molodetskikh <yalterz@gmail.com>2025-01-21 11:31:30 +0300
commitacd4cb51aa0e013bfec14444ee48a01c60ebaf8a (patch)
tree8530bbe3697d4af8a6e6391e5be5997a4b68c6f4 /src/layer/mod.rs
parent5ebcae997e672dcf0b9c73da383fa40f55a85fcc (diff)
downloadniri-acd4cb51aa0e013bfec14444ee48a01c60ebaf8a.tar.gz
niri-acd4cb51aa0e013bfec14444ee48a01c60ebaf8a.tar.bz2
niri-acd4cb51aa0e013bfec14444ee48a01c60ebaf8a.zip
Implement shadows for layer surfaces
Diffstat (limited to 'src/layer/mod.rs')
-rw-r--r--src/layer/mod.rs24
1 files changed, 23 insertions, 1 deletions
diff --git a/src/layer/mod.rs b/src/layer/mod.rs
index 72e804d5..36e7ee67 100644
--- a/src/layer/mod.rs
+++ b/src/layer/mod.rs
@@ -1,5 +1,5 @@
use niri_config::layer_rule::{LayerRule, Match};
-use niri_config::BlockOutFrom;
+use niri_config::{BlockOutFrom, CornerRadius, ShadowRule};
use smithay::desktop::LayerSurface;
pub mod mapped;
@@ -13,6 +13,12 @@ pub struct ResolvedLayerRules {
/// Whether to block out this layer surface from certain render targets.
pub block_out_from: Option<BlockOutFrom>,
+
+ /// Shadow overrides.
+ pub shadow: ShadowRule,
+
+ /// Corner radius to assume this layer surface has.
+ pub geometry_corner_radius: Option<CornerRadius>,
}
impl ResolvedLayerRules {
@@ -20,6 +26,17 @@ impl ResolvedLayerRules {
Self {
opacity: None,
block_out_from: None,
+ shadow: ShadowRule {
+ off: false,
+ on: false,
+ offset: None,
+ softness: None,
+ spread: None,
+ draw_behind_window: None,
+ color: None,
+ inactive_color: None,
+ },
+ geometry_corner_radius: None,
}
}
@@ -53,6 +70,11 @@ impl ResolvedLayerRules {
if let Some(x) = rule.block_out_from {
resolved.block_out_from = Some(x);
}
+ if let Some(x) = rule.geometry_corner_radius {
+ resolved.geometry_corner_radius = Some(x);
+ }
+
+ resolved.shadow.merge_with(&rule.shadow);
}
resolved