diff options
| author | Ivan Molodetskikh <yalterz@gmail.com> | 2025-02-06 08:42:09 +0300 |
|---|---|---|
| committer | Ivan Molodetskikh <yalterz@gmail.com> | 2025-02-10 07:29:33 -0800 |
| commit | 90f24da6317dea022fff89d538c9ba21a580e97b (patch) | |
| tree | ca678004687d8e323e89abc9aea09025c6631669 | |
| parent | df70140b3631bc1ffdaa2e27be621a35ef491a44 (diff) | |
| download | niri-90f24da6317dea022fff89d538c9ba21a580e97b.tar.gz niri-90f24da6317dea022fff89d538c9ba21a580e97b.tar.bz2 niri-90f24da6317dea022fff89d538c9ba21a580e97b.zip | |
Move ColumnDisplay to niri-ipc
| -rw-r--r-- | niri-config/src/lib.rs | 16 | ||||
| -rw-r--r-- | niri-ipc/src/lib.rs | 22 | ||||
| -rw-r--r-- | src/layout/mod.rs | 6 | ||||
| -rw-r--r-- | src/layout/scrolling.rs | 4 |
4 files changed, 30 insertions, 18 deletions
diff --git a/niri-config/src/lib.rs b/niri-config/src/lib.rs index fe43f814..b3d45aff 100644 --- a/niri-config/src/lib.rs +++ b/niri-config/src/lib.rs @@ -14,7 +14,7 @@ use knuffel::Decode as _; use layer_rule::LayerRule; use miette::{miette, Context, IntoDiagnostic, NarratableReportHandler}; use niri_ipc::{ - ConfiguredMode, LayoutSwitchTarget, PositionChange, SizeChange, Transform, + ColumnDisplay, ConfiguredMode, LayoutSwitchTarget, PositionChange, SizeChange, Transform, WorkspaceReferenceArg, }; use smithay::backend::renderer::Color32F; @@ -458,7 +458,7 @@ pub struct Layout { pub always_center_single_column: bool, #[knuffel(child)] pub empty_workspace_above_first: bool, - #[knuffel(child, unwrap(argument), default)] + #[knuffel(child, unwrap(argument, str), default = Self::default().default_column_display)] pub default_column_display: ColumnDisplay, #[knuffel(child, unwrap(argument), default = Self::default().gaps)] pub gaps: FloatOrInt<0, 65535>, @@ -478,7 +478,7 @@ impl Default for Layout { center_focused_column: Default::default(), always_center_single_column: false, empty_workspace_above_first: false, - default_column_display: Default::default(), + default_column_display: ColumnDisplay::Normal, gaps: FloatOrInt(16.), struts: Default::default(), preset_window_heights: Default::default(), @@ -797,16 +797,6 @@ impl From<PresetSize> for SizeChange { #[derive(Debug, Clone, Copy, PartialEq)] pub struct DefaultPresetSize(pub Option<PresetSize>); -/// How windows display in a column. -#[derive(knuffel::DecodeScalar, Debug, Default, Clone, Copy, PartialEq, Eq)] -pub enum ColumnDisplay { - /// Windows arranged vertically, spread across the working area height. - #[default] - Normal, - /// Windows are in tabs. - Tabbed, -} - #[derive(knuffel::Decode, Debug, Default, Clone, Copy, PartialEq)] pub struct Struts { #[knuffel(child, unwrap(argument), default)] diff --git a/niri-ipc/src/lib.rs b/niri-ipc/src/lib.rs index c2bd2c3c..f6086250 100644 --- a/niri-ipc/src/lib.rs +++ b/niri-ipc/src/lib.rs @@ -690,6 +690,16 @@ pub enum LayoutSwitchTarget { Index(u8), } +/// How windows display in a column. +#[derive(Serialize, Deserialize, Debug, Clone, Copy, PartialEq, Eq)] +#[cfg_attr(feature = "json-schema", derive(schemars::JsonSchema))] +pub enum ColumnDisplay { + /// Windows are tiled vertically across the working area height. + Normal, + /// Windows are in tabs. + Tabbed, +} + /// Output actions that niri can perform. // Variants in this enum should match the spelling of the ones in niri-config. Most thigs from // niri-config should be present here. @@ -1202,6 +1212,18 @@ impl FromStr for LayoutSwitchTarget { } } +impl FromStr for ColumnDisplay { + type Err = &'static str; + + fn from_str(s: &str) -> Result<Self, Self::Err> { + match s { + "normal" => Ok(Self::Normal), + "tabbed" => Ok(Self::Tabbed), + _ => Err(r#"invalid column display, can be "normal" or "tabbed""#), + } + } +} + impl FromStr for Transform { type Err = &'static str; diff --git a/src/layout/mod.rs b/src/layout/mod.rs index 54485617..d9121c07 100644 --- a/src/layout/mod.rs +++ b/src/layout/mod.rs @@ -39,10 +39,10 @@ use std::time::Duration; use monitor::MonitorAddWindowTarget; use niri_config::{ - CenterFocusedColumn, ColumnDisplay, Config, CornerRadius, FloatOrInt, PresetSize, Struts, + CenterFocusedColumn, Config, CornerRadius, FloatOrInt, PresetSize, Struts, Workspace as WorkspaceConfig, WorkspaceReference, }; -use niri_ipc::{PositionChange, SizeChange}; +use niri_ipc::{ColumnDisplay, PositionChange, SizeChange}; use scrolling::{Column, ColumnWidth, InsertHint, InsertPosition}; use smithay::backend::renderer::element::surface::WaylandSurfaceRenderElement; use smithay::backend::renderer::element::Id; @@ -341,7 +341,7 @@ impl Default for Options { center_focused_column: Default::default(), always_center_single_column: false, empty_workspace_above_first: false, - default_column_display: Default::default(), + default_column_display: ColumnDisplay::Normal, preset_column_widths: vec