From d7990af228d9f43df93aa400bb878c92d1569134 Mon Sep 17 00:00:00 2001 From: Stephen Seo Date: Sat, 9 Jul 2022 17:04:49 +0900 Subject: [PATCH] Impl fetching /proc/loadavg --- src/main.rs | 15 ++++++++++----- src/proc.rs | 21 +++++++++++++++++++++ 2 files changed, 31 insertions(+), 5 deletions(-) diff --git a/src/main.rs b/src/main.rs index 6a02f39..3122c31 100644 --- a/src/main.rs +++ b/src/main.rs @@ -10,10 +10,15 @@ fn main() { println!("["); let mut array = swaybar_object::SwaybarArray::new(); array.push_object(swaybar_object::SwaybarObject::default()); - array.push_object(swaybar_object::SwaybarObject::new()); - array.push_object(swaybar_object::SwaybarObject::default()); - let meminfo_string = proc::get_meminfo().expect("Should be able to get meminfo"); - let meminfo_object = swaybar_object::SwaybarObject::from_string(meminfo_string); - array.push_object(meminfo_object); + { + let meminfo_string = proc::get_meminfo().expect("Should be able to get meminfo"); + let meminfo_object = swaybar_object::SwaybarObject::from_string(meminfo_string); + array.push_object(meminfo_object); + } + { + let loadavg_string = proc::get_loadavg().expect("Should be able to get loadavg"); + let loadavg_object = swaybar_object::SwaybarObject::from_string(loadavg_string); + array.push_object(loadavg_object); + } println!("{}", array); } diff --git a/src/proc.rs b/src/proc.rs index 9e2d59a..07ca3bc 100644 --- a/src/proc.rs +++ b/src/proc.rs @@ -65,3 +65,24 @@ pub fn get_meminfo() -> io::Result { Ok(output) } } + +pub fn get_loadavg() -> io::Result { + let mut loadavg_string = String::new(); + { + let mut loadavg_file: File = File::open("/proc/loadavg")?; + loadavg_file.read_to_string(&mut loadavg_string)?; + } + + let loadavg_parts: Vec<&str> = loadavg_string.split_whitespace().collect(); + if loadavg_parts.len() < 3 { + return Err(io::Error::new( + io::ErrorKind::Other, + "loadavg: failed to parse", + )); + } + + Ok(format!( + "{} {} {}", + loadavg_parts[0], loadavg_parts[1], loadavg_parts[2] + )) +} -- 2.49.0