diff options
| author | Ivan Molodetskikh <yalterz@gmail.com> | 2025-08-27 09:49:04 +0300 |
|---|---|---|
| committer | Ivan Molodetskikh <yalterz@gmail.com> | 2025-08-27 10:43:57 +0300 |
| commit | 1e3ab8a8808db07742825678ca38ed992bdf6767 (patch) | |
| tree | ae4fe92245c6fb9b04d70a1d7ced6cbfec1c18e3 /niri-config/src/lib.rs | |
| parent | efa2ae2d3ff4d312a541a5afd1ae9e41cf2a4736 (diff) | |
| download | niri-1e3ab8a8808db07742825678ca38ed992bdf6767.tar.gz niri-1e3ab8a8808db07742825678ca38ed992bdf6767.tar.bz2 niri-1e3ab8a8808db07742825678ca38ed992bdf6767.zip | |
config: Extract window_rule
Diffstat (limited to 'niri-config/src/lib.rs')
| -rw-r--r-- | niri-config/src/lib.rs | 119 |
1 files changed, 4 insertions, 115 deletions
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<Match>, - #[knuffel(children(name = "exclude"))] - pub excludes: Vec<Match>, - - // Rules applied at initial configure. - #[knuffel(child)] - pub default_column_width: Option<DefaultPresetSize>, - #[knuffel(child)] - pub default_window_height: Option<DefaultPresetSize>, - #[knuffel(child, unwrap(argument))] - pub open_on_output: Option<String>, - #[knuffel(child, unwrap(argument))] - pub open_on_workspace: Option<String>, - #[knuffel(child, unwrap(argument))] - pub open_maximized: Option<bool>, - #[knuffel(child, unwrap(argument))] - pub open_fullscreen: Option<bool>, - #[knuffel(child, unwrap(argument))] - pub open_floating: Option<bool>, - #[knuffel(child, unwrap(argument))] - pub open_focused: Option<bool>, - - // Rules applied dynamically. - #[knuffel(child, unwrap(argument))] - pub min_width: Option<u16>, - #[knuffel(child, unwrap(argument))] - pub min_height: Option<u16>, - #[knuffel(child, unwrap(argument))] - pub max_width: Option<u16>, - #[knuffel(child, unwrap(argument))] - pub max_height: Option<u16>, - - #[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<bool>, - #[knuffel(child, unwrap(argument))] - pub opacity: Option<f32>, - #[knuffel(child)] - pub geometry_corner_radius: Option<CornerRadius>, - #[knuffel(child, unwrap(argument))] - pub clip_to_geometry: Option<bool>, - #[knuffel(child, unwrap(argument))] - pub baba_is_float: Option<bool>, - #[knuffel(child, unwrap(argument))] - pub block_out_from: Option<BlockOutFrom>, - #[knuffel(child, unwrap(argument))] - pub variable_refresh_rate: Option<bool>, - #[knuffel(child, unwrap(argument, str))] - pub default_column_display: Option<ColumnDisplay>, - #[knuffel(child)] - pub default_floating_position: Option<FloatingPosition>, - #[knuffel(child, unwrap(argument))] - pub scroll_factor: Option<FloatOrInt<0, 100>>, - #[knuffel(child, unwrap(argument))] - pub tiled_state: Option<bool>, -} - -#[derive(knuffel::Decode, Debug, Default, Clone, PartialEq)] -pub struct Match { - #[knuffel(property, str)] - pub app_id: Option<RegexEq>, - #[knuffel(property, str)] - pub title: Option<RegexEq>, - #[knuffel(property)] - pub is_active: Option<bool>, - #[knuffel(property)] - pub is_focused: Option<bool>, - #[knuffel(property)] - pub is_active_in_column: Option<bool>, - #[knuffel(property)] - pub is_floating: Option<bool>, - #[knuffel(property)] - pub is_window_cast_target: Option<bool>, - #[knuffel(property)] - pub is_urgent: Option<bool>, - #[knuffel(property)] - pub at_startup: Option<bool>, -} - #[derive(Debug, Default, Clone, Copy, PartialEq)] pub struct CornerRadius { pub top_left: f32, @@ -1641,29 +1553,6 @@ pub struct TabIndicatorRule { pub urgent_gradient: Option<Gradient>, } -#[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<Bind>); |
