aboutsummaryrefslogtreecommitdiff
path: root/src/input
diff options
context:
space:
mode:
authorIvan Molodetskikh <yalterz@gmail.com>2025-01-23 10:40:52 +0300
committerIvan Molodetskikh <yalterz@gmail.com>2025-01-23 11:13:55 +0300
commita10705fb200b452802a1ba7cd47679536e0ef849 (patch)
tree7e12f0602c4652e043021392632e7e4e24ebb4fe /src/input
parentb01b8afa8c8f9070300243050d9790e38fd19145 (diff)
downloadniri-a10705fb200b452802a1ba7cd47679536e0ef849.tar.gz
niri-a10705fb200b452802a1ba7cd47679536e0ef849.tar.bz2
niri-a10705fb200b452802a1ba7cd47679536e0ef849.zip
Add toggle-window-rule-opacity action
Diffstat (limited to 'src/input')
-rw-r--r--src/input/mod.rs29
1 files changed, 29 insertions, 0 deletions
diff --git a/src/input/mod.rs b/src/input/mod.rs
index 8872df78..c9ab0b30 100644
--- a/src/input/mod.rs
+++ b/src/input/mod.rs
@@ -39,6 +39,7 @@ use self::move_grab::MoveGrab;
use self::resize_grab::ResizeGrab;
use self::spatial_movement_grab::SpatialMovementGrab;
use crate::layout::scrolling::ScrollDirection;
+use crate::layout::LayoutElement as _;
use crate::niri::State;
use crate::ui::screenshot_ui::ScreenshotUi;
use crate::utils::spawning::spawn;
@@ -1574,6 +1575,34 @@ impl State {
// FIXME: granular
self.niri.queue_redraw_all();
}
+ Action::ToggleWindowRuleOpacity => {
+ let active_window = self
+ .niri
+ .layout
+ .active_workspace_mut()
+ .and_then(|ws| ws.active_window_mut());
+ if let Some(window) = active_window {
+ if window.rules().opacity.is_some_and(|o| o != 1.) {
+ window.toggle_ignore_opacity_window_rule();
+ // FIXME: granular
+ self.niri.queue_redraw_all();
+ }
+ }
+ }
+ Action::ToggleWindowRuleOpacityById(id) => {
+ let window = self
+ .niri
+ .layout
+ .workspaces_mut()
+ .find_map(|ws| ws.windows_mut().find(|w| w.id().get() == id));
+ if let Some(window) = window {
+ if window.rules().opacity.is_some_and(|o| o != 1.) {
+ window.toggle_ignore_opacity_window_rule();
+ // FIXME: granular
+ self.niri.queue_redraw_all();
+ }
+ }
+ }
}
}