// SPDX-License-Identifier: GPL-3.0-only use serde::{Deserialize, Serialize}; use crate::output::EdidProduct; #[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] pub struct WorkspaceConfig { pub workspace_mode: WorkspaceMode, #[serde(default)] pub workspace_layout: WorkspaceLayout, } impl Default for WorkspaceConfig { fn default() -> Self { Self { workspace_mode: WorkspaceMode::OutputBound, workspace_layout: WorkspaceLayout::Vertical, } } } #[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)] pub enum WorkspaceMode { OutputBound, Global, } #[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Serialize, Deserialize)] pub enum WorkspaceLayout { #[default] Vertical, Horizontal, } #[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)] pub struct OutputMatch { pub name: String, pub edid: Option, } #[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)] pub struct PinnedWorkspace { pub output: OutputMatch, pub tiling_enabled: bool, // TODO: name, id }