aboutsummaryrefslogtreecommitdiff
path: root/src/window
diff options
context:
space:
mode:
authorIvan Molodetskikh <yalterz@gmail.com>2024-03-24 08:30:26 +0400
committerIvan Molodetskikh <yalterz@gmail.com>2024-03-24 08:30:26 +0400
commit8b4a9d68e0ba8093e88d20f3a003f78ef27cac0e (patch)
treeb09c2b2d0237f36b36d01d6fc47657d8497d1c61 /src/window
parenta16a0f0e52d6df8abd602baa15cee44e0656d790 (diff)
downloadniri-8b4a9d68e0ba8093e88d20f3a003f78ef27cac0e.tar.gz
niri-8b4a9d68e0ba8093e88d20f3a003f78ef27cac0e.tar.bz2
niri-8b4a9d68e0ba8093e88d20f3a003f78ef27cac0e.zip
Implement opacity window rule
Diffstat (limited to 'src/window')
-rw-r--r--src/window/mapped.rs3
-rw-r--r--src/window/mod.rs7
2 files changed, 9 insertions, 1 deletions
diff --git a/src/window/mapped.rs b/src/window/mapped.rs
index a48ca636..52b9ac92 100644
--- a/src/window/mapped.rs
+++ b/src/window/mapped.rs
@@ -108,13 +108,14 @@ impl LayoutElement for Mapped {
renderer: &mut R,
location: Point<i32, Logical>,
scale: Scale<f64>,
+ alpha: f32,
) -> Vec<LayoutElementRenderElement<R>> {
let buf_pos = location - self.window.geometry().loc;
self.window.render_elements(
renderer,
buf_pos.to_physical_precise_round(scale),
scale,
- 1.,
+ alpha,
)
}
diff --git a/src/window/mod.rs b/src/window/mod.rs
index 63cdbe3f..ddf712b0 100644
--- a/src/window/mod.rs
+++ b/src/window/mod.rs
@@ -52,6 +52,9 @@ pub struct ResolvedWindowRules {
///
/// `None` means using the SSD heuristic.
pub draw_border_with_background: Option<bool>,
+
+ /// Extra opacity to draw this window with.
+ pub opacity: Option<f32>,
}
impl<'a> WindowRef<'a> {
@@ -82,6 +85,7 @@ impl ResolvedWindowRules {
max_width: None,
max_height: None,
draw_border_with_background: None,
+ opacity: None,
}
}
@@ -153,6 +157,9 @@ impl ResolvedWindowRules {
if let Some(x) = rule.draw_border_with_background {
resolved.draw_border_with_background = Some(x);
}
+ if let Some(x) = rule.opacity {
+ resolved.opacity = Some(x);
+ }
}
resolved.open_on_output = open_on_output.map(|x| x.to_owned());