microfetch/src/main.rs

79 lines
2.7 KiB
Rust
Raw Normal View History

2024-08-03 17:42:48 +00:00
mod colors;
mod desktop;
mod release;
mod system;
mod uptime;
2024-08-04 10:07:27 +00:00
use crate::colors::{print_dots, BLUE, CYAN, RESET};
2024-08-03 17:42:48 +00:00
use crate::desktop::get_desktop_info;
use crate::release::{get_os_pretty_name, get_system_info};
2024-08-04 10:07:27 +00:00
use crate::system::{get_memory_usage, get_root_disk_usage, get_shell, get_username_and_hostname};
2024-08-03 21:07:11 +00:00
use crate::uptime::get_current;
use std::io;
2024-08-04 10:07:27 +00:00
use color_eyre::Report;
use nix::sys::sysinfo::sysinfo;
2024-08-03 16:06:29 +00:00
fn main() -> Result<(), Report> {
color_eyre::install()?;
let info = sysinfo().map_err(|e| io::Error::new(io::ErrorKind::Other, e))?;
let fields = Fields {
user_info: get_username_and_hostname(),
os_name: get_os_pretty_name()?,
kernel_version: get_system_info()?,
shell: get_shell(),
desktop: get_desktop_info(),
uptime: get_current(&info)?,
memory_usage: get_memory_usage(&info),
storage: get_root_disk_usage()?,
colors: print_dots(),
};
2024-08-03 16:06:29 +00:00
print_system_info(&fields);
2024-08-04 10:07:27 +00:00
Ok(())
2024-08-03 21:05:57 +00:00
}
// Struct to hold all the fields we need to print
// helps avoid clippy warnings about argument count
// and makes it easier to pass around, though its
// not like we need to
struct Fields {
user_info: String,
os_name: String,
kernel_version: String,
shell: String,
uptime: String,
desktop: String,
memory_usage: String,
storage: String,
colors: String,
}
fn print_system_info(fields: &Fields) {
let Fields {
user_info,
os_name,
kernel_version,
shell,
uptime,
desktop,
memory_usage,
storage,
colors,
} = fields;
println!(
2024-08-03 16:06:29 +00:00
"
2024-08-04 09:42:53 +00:00
{CYAN} {BLUE} {user_info} ~{RESET}
{CYAN} {BLUE} {CYAN} {CYAN} {BLUE}System{RESET} {os_name}
{CYAN} {BLUE} {CYAN} {CYAN} {BLUE}Kernel{RESET} {kernel_version}
2024-08-04 10:07:27 +00:00
{BLUE} {BLUE}{CYAN} {CYAN} {BLUE}Shell{RESET} {shell}
{BLUE} {CYAN} {CYAN} {BLUE}Uptime{RESET} {uptime}
{BLUE} {CYAN} {CYAN} {CYAN} {BLUE}Desktop{RESET} {desktop}
2024-08-04 10:07:27 +00:00
{BLUE} {CYAN}{BLUE} {CYAN}󰍛 {BLUE}Memory{RESET} {memory_usage}
{BLUE} {CYAN}{BLUE} {CYAN}󱥎 {BLUE}Storage (/){RESET} {storage}
{CYAN} {BLUE} {CYAN} {BLUE}Colors{RESET} {colors}");
2024-08-03 16:06:29 +00:00
}