1use serde::{Deserialize, Serialize};
2use strum_macros::EnumString;
3
4#[derive(Debug, Serialize, Deserialize)]
5pub struct Rectangle {
6 pub x: i32,
7 pub y: i32,
8 pub width: i32,
9 pub height: i32,
10}
11
12#[derive(Debug, EnumString, Serialize, Deserialize)]
13#[serde(rename_all = "camelCase")]
14#[strum(serialize_all = "snake_case")]
15pub enum Layout {
16 Tiled,
17 Monocle,
18}
19
20#[derive(Debug, EnumString, Serialize, Deserialize)]
21#[serde(rename_all = "camelCase")]
22#[strum(serialize_all = "snake_case")]
23pub enum Dir {
24 South,
25 North,
26 West,
27 East,
28}
29
30#[derive(Debug, EnumString, Serialize, Deserialize)]
31#[serde(rename_all = "camelCase")]
32#[strum(serialize_all = "snake_case")]
33pub enum CycleDir {
34 Next,
35 Prev,
36}
37
38#[derive(Debug, Serialize, Deserialize)]
39#[serde(rename_all = "camelCase")]
40pub enum SplitType {
41 Vertical,
42 Horizontal,
43}
44
45#[derive(Debug)]
46pub enum Presel {
47 Dir(Dir),
48 Ratio(f32),
49 Cancel,
50}
51
52#[derive(Debug, EnumString)]
53#[strum(serialize_all = "snake_case")]
54pub enum Stack {
55 Below,
56 Above,
57}
58
59#[derive(Debug, Serialize, Deserialize, EnumString)]
60#[serde(rename_all = "camelCase")]
61#[strum(serialize_all = "snake_case")]
62pub enum State {
63 Tiled,
64 PseudoTiled,
65 Floating,
66 Fullscreen,
67}
68
69#[derive(Debug, EnumString)]
70#[strum(serialize_all = "snake_case")]
71pub enum Switch {
72 On,
73 Off,
74}
75
76#[derive(Debug, Serialize, Deserialize, EnumString)]
77#[serde(rename_all = "camelCase")]
78#[strum(serialize_all = "snake_case")]
79pub enum Flag {
80 Hidden,
81 Sticky,
82 Private,
83 Locked,
84 Marked,
85 Urgent,
86}
87
88#[derive(Debug, Serialize, Deserialize, EnumString)]
89#[serde(rename_all = "camelCase")]
90#[strum(serialize_all = "snake_case")]
91pub enum Layer {
92 Below,
93 Normal,
94 Above,
95}
96
97#[derive(Debug, EnumString)]
98#[strum(serialize_all = "snake_case")]
99pub enum Action {
100 Move,
101 ResizeCorner,
102 ResizeSide,
103}
104
105#[derive(Debug, EnumString)]
106#[strum(serialize_all = "snake_case")]
107pub enum ActionState {
108 Begin,
109 End,
110}