aboutsummaryrefslogtreecommitdiff
path: root/src/config
diff options
context:
space:
mode:
Diffstat (limited to 'src/config')
-rw-r--r--src/config/battery.rs21
-rw-r--r--src/config/cputemp.rs19
-rw-r--r--src/config/disk.rs19
-rw-r--r--src/config/loadavg.rs19
-rw-r--r--src/config/memory.rs19
-rw-r--r--src/config/mod.rs107
-rw-r--r--src/config/mpd.rs23
-rw-r--r--src/config/spotify.rs19
-rw-r--r--src/config/time.rs19
-rw-r--r--src/config/uptime.rs19
-rw-r--r--src/config/volume.rs21
-rw-r--r--src/config/weather.rs23
12 files changed, 328 insertions, 0 deletions
diff --git a/src/config/battery.rs b/src/config/battery.rs
new file mode 100644
index 0000000..5f7eaea
--- /dev/null
+++ b/src/config/battery.rs
@@ -0,0 +1,21 @@
+use serde::{Deserialize, Serialize};
+use std::default::Default;
+
+#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
+pub struct Battery {
+ pub source: String,
+ pub icon: String,
+ pub enabled: bool,
+ pub delay: f64,
+}
+
+impl Default for Battery {
+ fn default() -> Self {
+ Battery {
+ source: String::from("BAT0"),
+ icon: String::from(""),
+ enabled: false,
+ delay: 120.0,
+ }
+ }
+}
diff --git a/src/config/cputemp.rs b/src/config/cputemp.rs
new file mode 100644
index 0000000..39b43b0
--- /dev/null
+++ b/src/config/cputemp.rs
@@ -0,0 +1,19 @@
+use serde::{Deserialize, Serialize};
+use std::default::Default;
+
+#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
+pub struct CpuTemp {
+ pub icon: String,
+ pub enabled: bool,
+ pub delay: f64,
+}
+
+impl Default for CpuTemp {
+ fn default() -> Self {
+ CpuTemp {
+ icon: String::from(""),
+ enabled: false,
+ delay: 120.0,
+ }
+ }
+}
diff --git a/src/config/disk.rs b/src/config/disk.rs
new file mode 100644
index 0000000..ff8d07a
--- /dev/null
+++ b/src/config/disk.rs
@@ -0,0 +1,19 @@
+use serde::{Deserialize, Serialize};
+use std::default::Default;
+
+#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
+pub struct Disk {
+ pub icon: String,
+ pub enabled: bool,
+ pub delay: f64,
+}
+
+impl Default for Disk {
+ fn default() -> Self {
+ Disk {
+ icon: String::from(""),
+ enabled: false,
+ delay: 60.0,
+ }
+ }
+}
diff --git a/src/config/loadavg.rs b/src/config/loadavg.rs
new file mode 100644
index 0000000..96d3f74
--- /dev/null
+++ b/src/config/loadavg.rs
@@ -0,0 +1,19 @@
+use serde::{Deserialize, Serialize};
+use std::default::Default;
+
+#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
+pub struct LoadAvg {
+ pub icon: String,
+ pub enabled: bool,
+ pub delay: f64,
+}
+
+impl Default for LoadAvg {
+ fn default() -> Self {
+ LoadAvg {
+ icon: String::from(""),
+ enabled: false,
+ delay: 60.0,
+ }
+ }
+}
diff --git a/src/config/memory.rs b/src/config/memory.rs
new file mode 100644
index 0000000..19e9a31
--- /dev/null
+++ b/src/config/memory.rs
@@ -0,0 +1,19 @@
+use serde::{Deserialize, Serialize};
+use std::default::Default;
+
+#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
+pub struct Memory {
+ pub icon: String,
+ pub enabled: bool,
+ pub delay: f64,
+}
+
+impl Default for Memory {
+ fn default() -> Self {
+ Memory {
+ icon: String::from(""),
+ enabled: true,
+ delay: 2.0,
+ }
+ }
+}
diff --git a/src/config/mod.rs b/src/config/mod.rs
new file mode 100644
index 0000000..1a1ffd5
--- /dev/null
+++ b/src/config/mod.rs
@@ -0,0 +1,107 @@
+mod battery;
+mod cputemp;
+mod disk;
+mod memory;
+mod mpd;
+mod time;
+mod uptime;
+mod volume;
+mod weather;
+mod spotify;
+mod loadavg;
+
+use self::mpd::Mpd;
+use battery::Battery;
+use cputemp::CpuTemp;
+use disk::Disk;
+use memory::Memory;
+use time::Time;
+use uptime::Uptime;
+use volume::Volume;
+use weather::Weather;
+use spotify::Spotify;
+use loadavg::LoadAvg;
+
+use std::default::Default;
+use std::fs::File;
+use std::io::Read;
+
+use lazy_static::lazy_static;
+use serde::{Deserialize, Serialize};
+
+lazy_static! {
+ pub static ref CONFIG: Config = {
+ let yml_source = std::env::var("HOME").unwrap() + "/.config/rsblocks/rsblocks.yml";
+ let mut data = String::new();
+
+ match File::open(&yml_source) {
+ Ok(mut file) => {
+ file.read_to_string(&mut data).expect("Failed to read config to string");
+ serde_yaml::from_str(&data).expect("Failed to parse config")
+ }
+ Err(_) => Config::default(),
+ }
+ };
+}
+
+#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
+pub struct Config {
+ #[serde(default = "default_seperator")]
+ pub seperator: String,
+
+ #[serde(default)]
+ pub time: Time,
+
+ #[serde(default)]
+ pub memory: Memory,
+
+ #[serde(default)]
+ pub disk: Disk,
+
+ #[serde(default)]
+ pub volume: Volume,
+
+ #[serde(default)]
+ pub weather: Weather,
+
+ #[serde(default)]
+ pub battery: Battery,
+
+ #[serde(default)]
+ pub cpu_temperature: CpuTemp,
+
+ #[serde(default)]
+ pub uptime: Uptime,
+
+ #[serde(default)]
+ pub mpd: Mpd,
+
+ #[serde(default)]
+ pub spotify: Spotify,
+
+ #[serde(default)]
+ pub loadavg: LoadAvg
+}
+
+impl Default for Config {
+ fn default() -> Self {
+ Self {
+ seperator: "|".to_string(),
+ time: Default::default(),
+ memory: Default::default(),
+ disk: Default::default(),
+ volume: Default::default(),
+ weather: Default::default(),
+ battery: Default::default(),
+ cpu_temperature: Default::default(),
+ uptime: Default::default(),
+ mpd: Default::default(),
+ spotify: Default::default(),
+ loadavg: Default::default()
+ }
+ }
+}
+
+fn default_seperator() -> String {
+ "|".to_string()
+}
diff --git a/src/config/mpd.rs b/src/config/mpd.rs
new file mode 100644
index 0000000..15c9c1b
--- /dev/null
+++ b/src/config/mpd.rs
@@ -0,0 +1,23 @@
+use serde::{Deserialize, Serialize};
+use std::default::Default;
+
+#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
+pub struct Mpd {
+ pub icon: String,
+ pub host: String,
+ pub port: String,
+ pub enabled: bool,
+ pub delay: f64,
+}
+
+impl Default for Mpd {
+ fn default() -> Self {
+ Mpd {
+ icon: String::from(""),
+ host: String::from("127.0.0.1"),
+ port: String::from("6600"),
+ enabled: false,
+ delay: 15.0,
+ }
+ }
+}
diff --git a/src/config/spotify.rs b/src/config/spotify.rs
new file mode 100644
index 0000000..7cdcd2c
--- /dev/null
+++ b/src/config/spotify.rs
@@ -0,0 +1,19 @@
+use serde::{Deserialize, Serialize};
+use std::default::Default;
+
+#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
+pub struct Spotify {
+ pub icon: String,
+ pub enabled: bool,
+ pub delay: f64,
+}
+
+impl Default for Spotify {
+ fn default() -> Self {
+ Spotify {
+ icon: String::from(""),
+ enabled: false,
+ delay: 15.0,
+ }
+ }
+}
diff --git a/src/config/time.rs b/src/config/time.rs
new file mode 100644
index 0000000..4dc6720
--- /dev/null
+++ b/src/config/time.rs
@@ -0,0 +1,19 @@
+use serde::{Deserialize, Serialize};
+use std::default::Default;
+
+#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
+pub struct Time {
+ pub format: String,
+ pub icon: String,
+ pub delay: f64,
+}
+
+impl Default for Time {
+ fn default() -> Self {
+ Time {
+ format: String::from("%T"),
+ icon: String::from(""),
+ delay: 1.0,
+ }
+ }
+}
diff --git a/src/config/uptime.rs b/src/config/uptime.rs
new file mode 100644
index 0000000..9791833
--- /dev/null
+++ b/src/config/uptime.rs
@@ -0,0 +1,19 @@
+use serde::{Deserialize, Serialize};
+use std::default::Default;
+
+#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
+pub struct Uptime {
+ pub icon: String,
+ pub enabled: bool,
+ pub delay: f64,
+}
+
+impl Default for Uptime {
+ fn default() -> Self {
+ Uptime {
+ icon: String::from(""),
+ enabled: false,
+ delay: 60.0,
+ }
+ }
+}
diff --git a/src/config/volume.rs b/src/config/volume.rs
new file mode 100644
index 0000000..c660912
--- /dev/null
+++ b/src/config/volume.rs
@@ -0,0 +1,21 @@
+use serde::{Deserialize, Serialize};
+use std::default::Default;
+
+#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
+pub struct Volume {
+ pub icon: String,
+ pub enabled: bool,
+ pub delay: f64,
+ pub card: String,
+}
+
+impl Default for Volume {
+ fn default() -> Self {
+ Volume {
+ icon: String::from(""),
+ enabled: false,
+ delay: 0.17,
+ card: String::from("ALSA"),
+ }
+ }
+}
diff --git a/src/config/weather.rs b/src/config/weather.rs
new file mode 100644
index 0000000..ba2e90a
--- /dev/null
+++ b/src/config/weather.rs
@@ -0,0 +1,23 @@
+use serde::{Deserialize, Serialize};
+use std::default::Default;
+
+#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
+pub struct Weather {
+ pub city: String,
+ pub format: String,
+ pub icon: String,
+ pub enabled: bool,
+ pub delay: f64,
+}
+
+impl Default for Weather {
+ fn default() -> Self {
+ Weather {
+ city: String::from(""),
+ format: String::from("+%t"),
+ icon: String::from(""),
+ enabled: false,
+ delay: 7200.0, //7200 seconds = 2 hours
+ }
+ }
+}