hyprshell_core_lib/
transfer.rs

1use anyhow::Context;
2use ron::extensions::Extensions;
3use serde::{Deserialize, Serialize};
4
5#[derive(Debug, Serialize, Deserialize)]
6pub enum TransferType {
7    OpenOverview(OpenOverview),
8    OpenSwitch(OpenSwitch),
9    Switch(SwitchConfig),
10    Return(ReturnConfig),
11    Close,
12    Restart,
13}
14#[derive(Debug, Serialize, Deserialize)]
15pub struct OpenSwitch {
16    pub submap_name: String,
17    pub hide_filtered: bool,
18    pub filter_current_workspace: bool,
19    pub filter_current_monitor: bool,
20    pub filter_same_class: bool,
21    pub workspaces_per_row: u8,
22    pub direction: Direction,
23}
24
25#[derive(Debug, Serialize, Deserialize)]
26pub struct OpenOverview {
27    pub submap_name: String,
28    pub hide_filtered: bool,
29    pub filter_current_workspace: bool,
30    pub filter_current_monitor: bool,
31    pub filter_same_class: bool,
32    pub workspaces_per_row: u8,
33}
34
35#[derive(Debug, Serialize, Deserialize)]
36pub struct SwitchConfig {
37    pub direction: Direction,
38    pub workspace: bool,
39}
40
41#[derive(Debug, Serialize, Deserialize)]
42pub struct ReturnConfig {
43    pub offset: u8,
44}
45
46#[derive(Debug, Serialize, Deserialize, Eq, PartialEq)]
47pub enum Direction {
48    Right,
49    Left,
50    Up,
51    Down,
52}
53
54pub fn to_ron_string(transfer: &TransferType) -> anyhow::Result<String> {
55    ron::Options::default()
56        .with_default_extension(Extensions::IMPLICIT_SOME)
57        .with_default_extension(Extensions::UNWRAP_VARIANT_NEWTYPES)
58        .with_default_extension(Extensions::EXPLICIT_STRUCT_NAMES)
59        .to_string(transfer)
60        .context("Failed to serialize ron transfer data")
61}
62
63pub fn from_ron_string(transfer: &str) -> anyhow::Result<TransferType> {
64    ron::Options::default()
65        .with_default_extension(Extensions::IMPLICIT_SOME)
66        .with_default_extension(Extensions::UNWRAP_VARIANT_NEWTYPES)
67        .with_default_extension(Extensions::EXPLICIT_STRUCT_NAMES)
68        .from_str(transfer)
69        .context("Failed to deserialize ron transfer data")
70}