A criminally fast and simple system info fetching tool
at master 2.2 kB view raw
1extern crate uptime_lib; 2mod logo; 3use std::env::var; 4 5fn get_time() -> String { 6 let mut uptime = match uptime_lib::get() { 7 Ok(uptime) => { 8 uptime.as_secs_f64() 9 } 10 Err(err) => { 11 eprintln!("uptime: {}", err); 12 std::process::exit(1); 13 } 14 }; 15 16 let mut uptime_str: String = String::new(); 17 18 let days: f64 = uptime as f64 / 60.0 / 60.0 / 24.0; 19 if days >= 1.0 { 20 uptime_str.push_str(&format!("{}d ", days as i32)); 21 uptime -= f64::from(days as i32 * 24 * 60 * 60); 22 } 23 24 let hours: f64 = uptime / 60.0 / 60.0; 25 if hours >= 1.0 { 26 uptime_str.push_str(&format!("{}h ", hours as i32)); 27 uptime -= f64::from(hours as i32 * 60 * 60); 28 } 29 30 let minutes: f64 = uptime / 60.0; 31 if minutes >= 1.0 { 32 uptime_str.push_str(&format!("{}m ", minutes as i32)); 33 uptime -= f64::from(minutes as i32 * 60); 34 } 35 36 uptime_str.push_str(&format!("{}s ", uptime as i32)); 37 uptime_str 38} 39 40#[cfg(target_os = "linux")] 41fn get_session() -> String { 42 match var("XDG_CURRENT_DESKTOP") { 43 Ok(session) => String::from(session), 44 Err(_e) => String::from("Error Finding Session") 45 } 46} 47 48#[cfg(target_os = "windows")] 49fn get_session() -> String { 50 String::from("Windows") 51} 52 53fn main() { 54 get_time(); 55 56 let distro: logo::Logos = match whoami::distro().as_str().split(" ").collect::<Vec<&str>>()[0] { 57 "Arch" => logo::Logos::ArchLinux, 58 "Ubuntu" => logo::Logos::Ubuntu, 59 "Windows" => logo::Logos::Windows, 60 _ => logo::Logos::Unknown(whoami::distro()) 61 }; 62 63 println!(" ╭────────╮"); 64 println!(" {} \x1b[0;0m│ \x1b[1;31m User \x1b[0;0m│ {}\x1b[1m@\x1b[0m{}", logo::get(&distro)[0], whoami::username(), whoami::hostname()); 65 println!(" {} \x1b[0;0m│ \x1b[1;33m OS \x1b[0;0m│ {}", logo::get(&distro)[1], whoami::distro()); 66 println!(" {} \x1b[0;0m│ \x1b[1;36m WM \x1b[0;0m│ {}", logo::get(&distro)[2], get_session()); 67 println!(" {} \x1b[0;0m│ \x1b[1;34m UP \x1b[0;0m│ {}", logo::get(&distro)[3], get_time()); 68 println!(" ╰────────╯"); 69} 70