44 lines
1.0 KiB
Rust
44 lines
1.0 KiB
Rust
use serde::{Deserialize, Serialize};
|
|
use toml::Table;
|
|
|
|
use crate::display::Display;
|
|
|
|
#[derive(Serialize, Deserialize)]
|
|
pub struct BarbarConfig {
|
|
#[serde(default)]
|
|
pub display: Display,
|
|
pub ups: Option<i32>, // Updates per second
|
|
pub order: ModuleOrder,
|
|
pub modules: Option<Table>, // 'clock': [clock settings]
|
|
pub services: Option<Table>, // 'clockticker': [clockticker settings]
|
|
}
|
|
|
|
#[derive(serde::Deserialize, Serialize, Clone, Copy, Debug)]
|
|
#[serde(rename_all = "lowercase")]
|
|
pub enum Modules {
|
|
Audio,
|
|
Battery,
|
|
Clock,
|
|
Weather,
|
|
Workspaces,
|
|
}
|
|
|
|
impl Modules {
|
|
pub fn to_string(&self) -> &str {
|
|
match self {
|
|
Modules::Audio => "audio",
|
|
Modules::Battery => "battery",
|
|
Modules::Clock => "clock",
|
|
Modules::Weather => "weather",
|
|
Modules::Workspaces => "workspaces",
|
|
}
|
|
}
|
|
}
|
|
|
|
#[derive(Deserialize, Serialize, Clone)]
|
|
pub struct ModuleOrder {
|
|
pub left: Vec<Modules>,
|
|
pub middle: Vec<Modules>,
|
|
pub right: Vec<Modules>,
|
|
}
|