diff options
| author | Ivan Molodetskikh <yalterz@gmail.com> | 2025-05-01 09:36:10 +0300 |
|---|---|---|
| committer | Ivan Molodetskikh <yalterz@gmail.com> | 2025-05-01 09:45:38 +0300 |
| commit | 446bc155ce15103c347c1a4f654c71a88d9991fa (patch) | |
| tree | 63ec298768577b1ed14ff4dfc1e729bcd43d9aaf /niri-config/src | |
| parent | 3289324ce412f882566c99d53732078bf888ad56 (diff) | |
| download | niri-446bc155ce15103c347c1a4f654c71a88d9991fa.tar.gz niri-446bc155ce15103c347c1a4f654c71a88d9991fa.tar.bz2 niri-446bc155ce15103c347c1a4f654c71a88d9991fa.zip | |
Add workspace-shadow {} config to overview {}
Diffstat (limited to 'niri-config/src')
| -rw-r--r-- | niri-config/src/lib.rs | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/niri-config/src/lib.rs b/niri-config/src/lib.rs index 263ab7a7..8bb069c6 100644 --- a/niri-config/src/lib.rs +++ b/niri-config/src/lib.rs @@ -755,6 +755,49 @@ pub struct ShadowOffset { } #[derive(knuffel::Decode, Debug, Clone, Copy, PartialEq)] +pub struct WorkspaceShadow { + #[knuffel(child)] + pub off: bool, + #[knuffel(child, default = Self::default().offset)] + pub offset: ShadowOffset, + #[knuffel(child, unwrap(argument), default = Self::default().softness)] + pub softness: FloatOrInt<0, 1024>, + #[knuffel(child, unwrap(argument), default = Self::default().spread)] + pub spread: FloatOrInt<-1024, 1024>, + #[knuffel(child, default = Self::default().color)] + pub color: Color, +} + +impl Default for WorkspaceShadow { + fn default() -> Self { + Self { + off: false, + offset: ShadowOffset { + x: FloatOrInt(0.), + y: FloatOrInt(20.), + }, + softness: FloatOrInt(120.), + spread: FloatOrInt(20.), + color: Color::from_rgba8_unpremul(0, 0, 0, 0x70), + } + } +} + +impl From<WorkspaceShadow> for Shadow { + fn from(value: WorkspaceShadow) -> Self { + Self { + on: !value.off, + offset: value.offset, + softness: value.softness, + spread: value.spread, + draw_behind_window: false, + color: value.color, + inactive_color: None, + } + } +} + +#[derive(knuffel::Decode, Debug, Clone, Copy, PartialEq)] pub struct TabIndicator { #[knuffel(child)] pub off: bool, @@ -1269,6 +1312,8 @@ pub struct Overview { pub zoom: FloatOrInt<0, 1>, #[knuffel(child, default = Self::default().backdrop_color)] pub backdrop_color: Color, + #[knuffel(child, default)] + pub workspace_shadow: WorkspaceShadow, } impl Default for Overview { @@ -1276,6 +1321,7 @@ impl Default for Overview { Self { zoom: FloatOrInt(0.5), backdrop_color: DEFAULT_BACKDROP_COLOR, + workspace_shadow: WorkspaceShadow::default(), } } } @@ -4611,6 +4657,29 @@ mod tests { b: 0.15, a: 1.0, }, + workspace_shadow: WorkspaceShadow { + off: false, + offset: ShadowOffset { + x: FloatOrInt( + 0.0, + ), + y: FloatOrInt( + 20.0, + ), + }, + softness: FloatOrInt( + 120.0, + ), + spread: FloatOrInt( + 20.0, + ), + color: Color { + r: 0.0, + g: 0.0, + b: 0.0, + a: 0.4392157, + }, + }, }, environment: Environment( [ |
