From 1e3ab8a8808db07742825678ca38ed992bdf6767 Mon Sep 17 00:00:00 2001 From: Ivan Molodetskikh Date: Wed, 27 Aug 2025 09:49:04 +0300 Subject: config: Extract window_rule --- niri-config/src/lib.rs | 119 ++----------------------------------------------- 1 file changed, 4 insertions(+), 115 deletions(-) (limited to 'niri-config/src/lib.rs') diff --git a/niri-config/src/lib.rs b/niri-config/src/lib.rs index 2199d2fb..f0b89a4a 100644 --- a/niri-config/src/lib.rs +++ b/niri-config/src/lib.rs @@ -13,7 +13,6 @@ use std::time::Duration; use bitflags::bitflags; use knuffel::errors::DecodeError; use knuffel::Decode as _; -use layer_rule::LayerRule; use miette::{miette, Context, IntoDiagnostic}; use niri_ipc::{ ColumnDisplay, ConfiguredMode, LayoutSwitchTarget, PositionChange, SizeChange, Transform, @@ -29,9 +28,11 @@ pub const DEFAULT_BACKGROUND_COLOR: Color = Color::from_array_unpremul([0.25, 0. pub const DEFAULT_BACKDROP_COLOR: Color = Color::from_array_unpremul([0.15, 0.15, 0.15, 1.]); pub mod layer_rule; +pub mod utils; +pub mod window_rule; -mod utils; -pub use utils::RegexEq; +pub use crate::layer_rule::LayerRule; +pub use crate::window_rule::{FloatingPosition, RelativeTo, WindowRule}; #[derive(knuffel::Decode, Debug, PartialEq)] pub struct Config { @@ -1458,95 +1459,6 @@ pub struct Workspace { #[derive(Debug, Clone, PartialEq, Eq)] pub struct WorkspaceName(pub String); -#[derive(knuffel::Decode, Debug, Default, Clone, PartialEq)] -pub struct WindowRule { - #[knuffel(children(name = "match"))] - pub matches: Vec, - #[knuffel(children(name = "exclude"))] - pub excludes: Vec, - - // Rules applied at initial configure. - #[knuffel(child)] - pub default_column_width: Option, - #[knuffel(child)] - pub default_window_height: Option, - #[knuffel(child, unwrap(argument))] - pub open_on_output: Option, - #[knuffel(child, unwrap(argument))] - pub open_on_workspace: Option, - #[knuffel(child, unwrap(argument))] - pub open_maximized: Option, - #[knuffel(child, unwrap(argument))] - pub open_fullscreen: Option, - #[knuffel(child, unwrap(argument))] - pub open_floating: Option, - #[knuffel(child, unwrap(argument))] - pub open_focused: Option, - - // Rules applied dynamically. - #[knuffel(child, unwrap(argument))] - pub min_width: Option, - #[knuffel(child, unwrap(argument))] - pub min_height: Option, - #[knuffel(child, unwrap(argument))] - pub max_width: Option, - #[knuffel(child, unwrap(argument))] - pub max_height: Option, - - #[knuffel(child, default)] - pub focus_ring: BorderRule, - #[knuffel(child, default)] - pub border: BorderRule, - #[knuffel(child, default)] - pub shadow: ShadowRule, - #[knuffel(child, default)] - pub tab_indicator: TabIndicatorRule, - #[knuffel(child, unwrap(argument))] - pub draw_border_with_background: Option, - #[knuffel(child, unwrap(argument))] - pub opacity: Option, - #[knuffel(child)] - pub geometry_corner_radius: Option, - #[knuffel(child, unwrap(argument))] - pub clip_to_geometry: Option, - #[knuffel(child, unwrap(argument))] - pub baba_is_float: Option, - #[knuffel(child, unwrap(argument))] - pub block_out_from: Option, - #[knuffel(child, unwrap(argument))] - pub variable_refresh_rate: Option, - #[knuffel(child, unwrap(argument, str))] - pub default_column_display: Option, - #[knuffel(child)] - pub default_floating_position: Option, - #[knuffel(child, unwrap(argument))] - pub scroll_factor: Option>, - #[knuffel(child, unwrap(argument))] - pub tiled_state: Option, -} - -#[derive(knuffel::Decode, Debug, Default, Clone, PartialEq)] -pub struct Match { - #[knuffel(property, str)] - pub app_id: Option, - #[knuffel(property, str)] - pub title: Option, - #[knuffel(property)] - pub is_active: Option, - #[knuffel(property)] - pub is_focused: Option, - #[knuffel(property)] - pub is_active_in_column: Option, - #[knuffel(property)] - pub is_floating: Option, - #[knuffel(property)] - pub is_window_cast_target: Option, - #[knuffel(property)] - pub is_urgent: Option, - #[knuffel(property)] - pub at_startup: Option, -} - #[derive(Debug, Default, Clone, Copy, PartialEq)] pub struct CornerRadius { pub top_left: f32, @@ -1641,29 +1553,6 @@ pub struct TabIndicatorRule { pub urgent_gradient: Option, } -#[derive(knuffel::Decode, Debug, Clone, Copy, PartialEq)] -pub struct FloatingPosition { - #[knuffel(property)] - pub x: FloatOrInt<-65535, 65535>, - #[knuffel(property)] - pub y: FloatOrInt<-65535, 65535>, - #[knuffel(property, default)] - pub relative_to: RelativeTo, -} - -#[derive(knuffel::DecodeScalar, Debug, Default, Clone, Copy, PartialEq, Eq)] -pub enum RelativeTo { - #[default] - TopLeft, - TopRight, - BottomLeft, - BottomRight, - Top, - Bottom, - Left, - Right, -} - #[derive(Debug, Default, PartialEq)] pub struct Binds(pub Vec); -- cgit