cosmic-comp/cosmic-comp-config/src/workspace.rs

68 lines
1.6 KiB
Rust
Raw Normal View History

// SPDX-License-Identifier: GPL-3.0-only
use serde::{Deserialize, Serialize};
use crate::EdidProduct;
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct WorkspaceConfig {
pub workspace_mode: WorkspaceMode,
#[serde(default)]
pub workspace_layout: WorkspaceLayout,
#[serde(default)]
pub action_on_typing: Action,
#[serde(default = "default_wraparound")]
pub workspace_wraparound: bool,
}
fn default_wraparound() -> bool {
true
}
impl Default for WorkspaceConfig {
fn default() -> Self {
Self {
workspace_mode: WorkspaceMode::default(),
workspace_layout: WorkspaceLayout::default(),
action_on_typing: Action::default(),
workspace_wraparound: default_wraparound(),
}
}
}
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Serialize, Deserialize)]
pub enum WorkspaceMode {
#[default]
OutputBound,
Global,
}
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Serialize, Deserialize)]
pub enum WorkspaceLayout {
#[default]
Vertical,
Horizontal,
}
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Serialize, Deserialize)]
pub enum Action {
#[default]
None,
OpenLauncher,
OpenApplications,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct OutputMatch {
pub name: String,
pub edid: Option<EdidProduct>,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct PinnedWorkspace {
pub output: OutputMatch,
pub tiling_enabled: bool,
pub id: Option<String>,
2026-05-30 19:14:13 +02:00
pub name: Option<String>,
}