diff options
author | Mustafa Salih <37256744+MustafaSalih1993@users.noreply.github.com> | 2021-02-02 02:23:37 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-02-02 02:23:37 +0300 |
commit | 303808ea191f4c8d047c14a77a1bd322d4dcc081 (patch) | |
tree | 7496e0b92c754eafe734d6e10a9300c3d4fc00bb /src | |
parent | 6c0dfddead48e603826fbf637fe51f02e8320223 (diff) |
showing current public ip address (#43)
Diffstat (limited to 'src')
-rw-r--r-- | src/config/mod.rs | 6 | ||||
-rw-r--r-- | src/config/pub_ip.rs | 19 | ||||
-rw-r--r-- | src/run.rs | 28 | ||||
-rw-r--r-- | src/types.rs | 9 | ||||
-rw-r--r-- | src/utils/mod.rs | 1 | ||||
-rw-r--r-- | src/utils/pub_ip.rs | 15 |
6 files changed, 70 insertions, 8 deletions
diff --git a/src/config/mod.rs b/src/config/mod.rs index 5741b11..e55465f 100644 --- a/src/config/mod.rs +++ b/src/config/mod.rs @@ -5,6 +5,7 @@ mod loadavg; mod memory; mod mpd; mod netspeed; +mod pub_ip; mod spotify; mod time; mod uptime; @@ -18,6 +19,7 @@ use disk::Disk; use loadavg::LoadAvg; use memory::Memory; use netspeed::NetSpeed; +use pub_ip::PubIp; use spotify::Spotify; use time::Time; use uptime::Uptime; @@ -87,6 +89,9 @@ pub struct Config { #[serde(default)] pub netspeed: NetSpeed, + + #[serde(default)] + pub pub_ip: PubIp, } impl Default for Config { @@ -105,6 +110,7 @@ impl Default for Config { spotify: Default::default(), loadavg: Default::default(), netspeed: Default::default(), + pub_ip: Default::default(), } } } diff --git a/src/config/pub_ip.rs b/src/config/pub_ip.rs new file mode 100644 index 0000000..df27f28 --- /dev/null +++ b/src/config/pub_ip.rs @@ -0,0 +1,19 @@ +use serde::{Deserialize, Serialize}; +use std::default::Default; + +#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] +pub struct PubIp { + pub icon: String, + pub enabled: bool, + pub delay: f64, +} + +impl Default for PubIp { + fn default() -> Self { + PubIp { + icon: String::from(""), + enabled: false, + delay: 120.0, + } + } +} @@ -17,6 +17,16 @@ pub fn run(mut blocks: Blocks) { thread::sleep(Duration::from_secs_f64(CONFIG.loadavg.delay)) }); } + // public ip thread + if CONFIG.pub_ip.enabled { + let pub_ip_tx = tx.clone(); + thread::spawn(move || loop { + let pub_ip_data = ThreadsData::PubIp(pub_ip::get_pub_ip()); + pub_ip_tx.send(pub_ip_data).unwrap(); + thread::sleep(Duration::from_secs_f64(CONFIG.pub_ip.delay)) + }); + } + // spotify thread if CONFIG.spotify.enabled { let spotify_tx = tx.clone(); @@ -130,7 +140,8 @@ pub fn run(mut blocks: Blocks) { //Main { // NOTE: order matters to the final format - let mut bar: Vec<String> = vec![String::from(""); 12]; + + let mut bar: Vec<String> = vec![String::from(""); 13]; //iterating the values recieved from the threads for data in rx { match data { @@ -139,13 +150,14 @@ pub fn run(mut blocks: Blocks) { ThreadsData::Sound(x) => bar[2] = x, ThreadsData::Weather(x) => bar[3] = x, ThreadsData::NetSpeed(x) => bar[4] = x, - ThreadsData::Disk(x) => bar[5] = x, - ThreadsData::Memory(x) => bar[6] = x, - ThreadsData::CpuTemp(x) => bar[7] = x, - ThreadsData::LoadAvg(x) => bar[8] = x, - ThreadsData::Battery(x) => bar[9] = x, - ThreadsData::Uptime(x) => bar[10] = x, - ThreadsData::Time(x) => bar[11] = x, + ThreadsData::PubIp(x) => bar[5] = x, + ThreadsData::Disk(x) => bar[6] = x, + ThreadsData::Memory(x) => bar[7] = x, + ThreadsData::CpuTemp(x) => bar[8] = x, + ThreadsData::LoadAvg(x) => bar[9] = x, + ThreadsData::Battery(x) => bar[10] = x, + ThreadsData::Uptime(x) => bar[11] = x, + ThreadsData::Time(x) => bar[12] = x, } // match ends here diff --git a/src/types.rs b/src/types.rs index 7184d47..5def739 100644 --- a/src/types.rs +++ b/src/types.rs @@ -14,6 +14,7 @@ pub enum ThreadsData { Spotify(String), LoadAvg(String), NetSpeed(String), + PubIp(String), } #[derive(Clone)] @@ -30,6 +31,7 @@ pub struct Config { pub mpd: Mpd, pub spotify: Spotify, pub loadavg: LoadAvg, + pub pub_ip: PubIp, } #[derive(Clone)] @@ -122,6 +124,13 @@ pub struct NetSpeed { pub enabled: bool, } +#[derive(Clone)] +pub struct PubIp { + pub icon: String, + pub enabled: bool, + pub delay: f64, +} + pub struct Blocks { pub disp: Display<name::NameConnection>, pub root: Window, diff --git a/src/utils/mod.rs b/src/utils/mod.rs index 3b4eb7b..e70cf88 100644 --- a/src/utils/mod.rs +++ b/src/utils/mod.rs @@ -5,6 +5,7 @@ pub mod load_average; pub mod memory; pub mod mpd; pub mod netspeed; +pub mod pub_ip; pub mod spotify; pub mod time; pub mod uptime; diff --git a/src/utils/pub_ip.rs b/src/utils/pub_ip.rs new file mode 100644 index 0000000..ce2da92 --- /dev/null +++ b/src/utils/pub_ip.rs @@ -0,0 +1,15 @@ +use crate::config::CONFIG; + +pub fn get_pub_ip() -> String { + let url = format!("http://api.ipify.org"); + let err_string = String::from("Error"); + let res = match minreq::get(url).send() { + Ok(resp) => match resp.as_str() { + Ok(res_str) => res_str.trim().to_string(), + Err(_) => err_string, + }, + Err(_) => err_string, + }; + + format!(" {} {} {}", CONFIG.pub_ip.icon, res, CONFIG.seperator) +} |