]> git.seodisparate.com - swaybar_info/commitdiff
Impl fetching /proc/loadavg
authorStephen Seo <seo.disparate@gmail.com>
Sat, 9 Jul 2022 08:04:49 +0000 (17:04 +0900)
committerStephen Seo <seo.disparate@gmail.com>
Sat, 9 Jul 2022 08:04:49 +0000 (17:04 +0900)
src/main.rs
src/proc.rs

index 6a02f3911340e9be6717831fcc5d30856fe4f92a..3122c314f718632b61ccab7675aa1a0b96d03d42 100644 (file)
@@ -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);
 }
index 9e2d59a3d42a32f2a2624af3e382e496e3afb161..07ca3bc4809d7362ab717e94f90cd72a9066d00f 100644 (file)
@@ -65,3 +65,24 @@ pub fn get_meminfo() -> io::Result<String> {
         Ok(output)
     }
 }
+
+pub fn get_loadavg() -> io::Result<String> {
+    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]
+    ))
+}