diff options
| author | Ivan Molodetskikh <yalterz@gmail.com> | 2025-01-23 10:40:52 +0300 |
|---|---|---|
| committer | Ivan Molodetskikh <yalterz@gmail.com> | 2025-01-23 11:13:55 +0300 |
| commit | a10705fb200b452802a1ba7cd47679536e0ef849 (patch) | |
| tree | 7e12f0602c4652e043021392632e7e4e24ebb4fe /src/input/mod.rs | |
| parent | b01b8afa8c8f9070300243050d9790e38fd19145 (diff) | |
| download | niri-a10705fb200b452802a1ba7cd47679536e0ef849.tar.gz niri-a10705fb200b452802a1ba7cd47679536e0ef849.tar.bz2 niri-a10705fb200b452802a1ba7cd47679536e0ef849.zip | |
Add toggle-window-rule-opacity action
Diffstat (limited to 'src/input/mod.rs')
| -rw-r--r-- | src/input/mod.rs | 29 |
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(); + } + } + } } } |
