diff options
| author | Christian Rieger <christian.rieger@student.tugraz.at> | 2024-09-05 23:37:10 +0200 |
|---|---|---|
| committer | Ivan Molodetskikh <yalterz@gmail.com> | 2024-09-12 02:32:44 -0700 |
| commit | d0e624e6153e1a22ea0737e6830ed4edd7333304 (patch) | |
| tree | 62e67b076b0c6522f8e3d7dcdfbe4818b99c4be5 /niri-config/src/lib.rs | |
| parent | 087a50a19c87175bc6c2a3b7ddc886f98f26f7c4 (diff) | |
| download | niri-d0e624e6153e1a22ea0737e6830ed4edd7333304.tar.gz niri-d0e624e6153e1a22ea0737e6830ed4edd7333304.tar.bz2 niri-d0e624e6153e1a22ea0737e6830ed4edd7333304.zip | |
Implement preset window heights
Diffstat (limited to 'niri-config/src/lib.rs')
| -rw-r--r-- | niri-config/src/lib.rs | 42 |
1 files changed, 30 insertions, 12 deletions
diff --git a/niri-config/src/lib.rs b/niri-config/src/lib.rs index dedc656f..520a0417 100644 --- a/niri-config/src/lib.rs +++ b/niri-config/src/lib.rs @@ -392,9 +392,11 @@ pub struct Layout { #[knuffel(child, default)] pub border: Border, #[knuffel(child, unwrap(children), default)] - pub preset_column_widths: Vec<PresetWidth>, + pub preset_column_widths: Vec<PresetSize>, #[knuffel(child)] - pub default_column_width: Option<DefaultColumnWidth>, + pub default_column_width: Option<DefaultPresetSize>, + #[knuffel(child, unwrap(children), default)] + pub preset_window_heights: Vec<PresetSize>, #[knuffel(child, unwrap(argument), default)] pub center_focused_column: CenterFocusedColumn, #[knuffel(child)] @@ -416,6 +418,7 @@ impl Default for Layout { always_center_single_column: false, gaps: FloatOrInt(16.), struts: Default::default(), + preset_window_heights: Default::default(), } } } @@ -624,13 +627,13 @@ impl Default for Cursor { } #[derive(knuffel::Decode, Debug, Clone, Copy, PartialEq)] -pub enum PresetWidth { +pub enum PresetSize { Proportion(#[knuffel(argument)] f64), Fixed(#[knuffel(argument)] i32), } #[derive(Debug, Clone, PartialEq)] -pub struct DefaultColumnWidth(pub Option<PresetWidth>); +pub struct DefaultPresetSize(pub Option<PresetSize>); #[derive(knuffel::Decode, Debug, Default, Clone, Copy, PartialEq)] pub struct Struts { @@ -898,7 +901,7 @@ pub struct WindowRule { // Rules applied at initial configure. #[knuffel(child)] - pub default_column_width: Option<DefaultColumnWidth>, + pub default_column_width: Option<DefaultPresetSize>, #[knuffel(child, unwrap(argument))] pub open_on_output: Option<String>, #[knuffel(child, unwrap(argument))] @@ -1155,6 +1158,7 @@ pub enum Action { #[knuffel(skip)] ResetWindowHeightById(u64), SwitchPresetColumnWidth, + SwitchPresetWindowHeight, MaximizeColumn, SetColumnWidth(#[knuffel(argument, str)] SizeChange), SwitchLayout(#[knuffel(argument, str)] LayoutSwitchTarget), @@ -1266,6 +1270,7 @@ impl From<niri_ipc::Action> for Action { niri_ipc::Action::ResetWindowHeight { id: None } => Self::ResetWindowHeight, niri_ipc::Action::ResetWindowHeight { id: Some(id) } => Self::ResetWindowHeightById(id), niri_ipc::Action::SwitchPresetColumnWidth {} => Self::SwitchPresetColumnWidth, + niri_ipc::Action::SwitchPresetWindowHeight {} => Self::SwitchPresetWindowHeight, niri_ipc::Action::MaximizeColumn {} => Self::MaximizeColumn, niri_ipc::Action::SetColumnWidth { change } => Self::SetColumnWidth(change), niri_ipc::Action::SwitchLayout { layout } => Self::SwitchLayout(layout), @@ -1882,7 +1887,7 @@ impl OutputName { } } -impl<S> knuffel::Decode<S> for DefaultColumnWidth +impl<S> knuffel::Decode<S> for DefaultPresetSize where S: knuffel::traits::ErrorSpan, { @@ -1902,7 +1907,7 @@ where "expected no more than one child", )); } - PresetWidth::decode_node(child, ctx).map(Some).map(Self) + PresetSize::decode_node(child, ctx).map(Some).map(Self) } else { Ok(Self(None)) } @@ -2914,6 +2919,13 @@ mod tests { fixed 1280 } + preset-window-heights { + proportion 0.25 + proportion 0.5 + fixed 960 + fixed 1280 + } + default-column-width { proportion 0.25; } gaps 8 @@ -3104,14 +3116,20 @@ mod tests { inactive_gradient: None, }, preset_column_widths: vec![ - PresetWidth::Proportion(0.25), - PresetWidth::Proportion(0.5), - PresetWidth::Fixed(960), - PresetWidth::Fixed(1280), + PresetSize::Proportion(0.25), + PresetSize::Proportion(0.5), + PresetSize::Fixed(960), + PresetSize::Fixed(1280), ], - default_column_width: Some(DefaultColumnWidth(Some(PresetWidth::Proportion( + default_column_width: Some(DefaultPresetSize(Some(PresetSize::Proportion( 0.25, )))), + preset_window_heights: vec![ + PresetSize::Proportion(0.25), + PresetSize::Proportion(0.5), + PresetSize::Fixed(960), + PresetSize::Fixed(1280), + ], gaps: FloatOrInt(8.), struts: Struts { left: FloatOrInt(1.), |
