1use serde::{Deserialize, Serialize};
2
3#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4pub struct Block {
5 pub full_text: String,
6 #[serde(skip_serializing_if = "Option::is_none")]
7 pub short_text: Option<String>,
8 #[serde(skip_serializing_if = "Option::is_none")]
9 pub color: Option<String>,
10 #[serde(skip_serializing_if = "Option::is_none")]
11 pub background: Option<String>,
12 #[serde(skip_serializing_if = "Option::is_none")]
13 pub border: Option<String>,
14 #[serde(skip_serializing_if = "Option::is_none")]
15 pub border_top: Option<u32>,
16 #[serde(skip_serializing_if = "Option::is_none")]
17 pub border_bottom: Option<u32>,
18 #[serde(skip_serializing_if = "Option::is_none")]
19 pub border_left: Option<u32>,
20 #[serde(skip_serializing_if = "Option::is_none")]
21 pub border_right: Option<u32>,
22 #[serde(skip_serializing_if = "Option::is_none")]
23 pub min_width: Option<Width>,
24 #[serde(skip_serializing_if = "Option::is_none")]
25 pub align: Option<Align>,
26 #[serde(skip_serializing_if = "Option::is_none")]
27 pub name: Option<String>,
28 #[serde(skip_serializing_if = "Option::is_none")]
29 pub instance: Option<String>,
30 #[serde(skip_serializing_if = "Option::is_none")]
31 pub urgent: Option<bool>,
32 #[serde(skip_serializing_if = "Option::is_none")]
33 pub separator: Option<bool>,
34 #[serde(skip_serializing_if = "Option::is_none")]
35 pub separator_block_width: Option<u32>,
36 #[serde(skip_serializing_if = "Option::is_none")]
37 pub markup: Option<Markup>,
38}
39
40#[derive(Debug, Copy, Clone, PartialEq, Serialize, Deserialize)]
41#[serde(rename_all = "lowercase")]
42pub enum Align {
43 Center,
44 Left,
45 Right,
46}
47
48#[derive(Debug, Copy, Clone, PartialEq, Serialize, Deserialize)]
49#[serde(rename_all = "lowercase")]
50pub enum Markup {
51 Pango,
52 None,
53}
54
55#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
56#[serde(untagged)]
57pub enum Width {
58 Pixels(u32),
59 Text(String),
60}