use crate::{ClientId, WorkspaceId};
use serde::{Deserialize, Serialize};
#[derive(Debug, Serialize, Deserialize)]
pub enum TransferType {
OpenOverview(OpenOverview),
OpenSwitch(OpenSwitch),
Switch(SwitchConfig),
Close(CloseConfig),
Type(String),
Exit,
Restart,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct OpenSwitch {
pub submap_name: String,
pub hide_filtered: bool,
pub filter_current_workspace: bool,
pub filter_current_monitor: bool,
pub filter_same_class: bool,
pub workspaces_per_row: u8,
pub direction: Direction,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct OpenOverview {
pub submap_name: String,
pub hide_filtered: bool,
pub filter_current_workspace: bool,
pub filter_current_monitor: bool,
pub filter_same_class: bool,
pub workspaces_per_row: u8,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct SwitchConfig {
pub direction: Direction,
pub workspace: bool,
}
#[derive(Debug, Serialize, Deserialize)]
pub enum CloseConfig {
Launcher(char),
Windows(WindowsOverride),
None,
}
#[derive(Debug, Serialize, Deserialize)]
pub enum WindowsOverride {
ClientId(ClientId),
WorkspaceID(WorkspaceId),
}
#[derive(Debug, Serialize, Deserialize, Eq, PartialEq)]
pub enum Direction {
Right,
Left,
Up,
Down,
}