From c5fffd6e2c48aa7fb8b45b8bdcd972bbd8ce900b Mon Sep 17 00:00:00 2001 From: Ivan Molodetskikh Date: Fri, 29 Nov 2024 21:11:02 +0300 Subject: Initial WIP floating window implementation --- niri-config/src/lib.rs | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'niri-config/src') diff --git a/niri-config/src/lib.rs b/niri-config/src/lib.rs index fc1fdfd4..8d755c78 100644 --- a/niri-config/src/lib.rs +++ b/niri-config/src/lib.rs @@ -983,6 +983,8 @@ pub struct WindowRule { pub open_maximized: Option, #[knuffel(child, unwrap(argument))] pub open_fullscreen: Option, + #[knuffel(child, unwrap(argument))] + pub open_floating: Option, // Rules applied dynamically. #[knuffel(child, unwrap(argument))] @@ -1254,6 +1256,10 @@ pub enum Action { MoveWorkspaceToMonitorRight, MoveWorkspaceToMonitorDown, MoveWorkspaceToMonitorUp, + ToggleWindowFloating, + #[knuffel(skip)] + ToggleWindowFloatingById(u64), + SwitchFocusBetweenFloatingAndTiling, } impl From for Action { @@ -1386,6 +1392,13 @@ impl From for Action { niri_ipc::Action::ToggleDebugTint {} => Self::ToggleDebugTint, niri_ipc::Action::DebugToggleOpaqueRegions {} => Self::DebugToggleOpaqueRegions, niri_ipc::Action::DebugToggleDamage {} => Self::DebugToggleDamage, + niri_ipc::Action::ToggleWindowFloating { id: None } => Self::ToggleWindowFloating, + niri_ipc::Action::ToggleWindowFloating { id: Some(id) } => { + Self::ToggleWindowFloatingById(id) + } + niri_ipc::Action::SwitchFocusBetweenFloatingAndTiling {} => { + Self::SwitchFocusBetweenFloatingAndTiling + } } } } @@ -3128,6 +3141,7 @@ mod tests { open-on-output "eDP-1" open-maximized true open-fullscreen false + open-floating false focus-ring { off @@ -3406,6 +3420,7 @@ mod tests { open_on_output: Some("eDP-1".to_owned()), open_maximized: Some(true), open_fullscreen: Some(false), + open_floating: Some(false), focus_ring: BorderRule { off: true, width: Some(FloatOrInt(3.)), -- cgit