microfetch/src/main.rs
NotAShelf 927f6077b4
Some checks failed
Rust / build (push) Has been cancelled
store printed fields in a struct
Shut up, clippy.
2024-08-05 11:33:42 +03:00

76 lines
2.8 KiB
Rust

mod colors;
mod desktop;
mod release;
mod system;
mod uptime;
use crate::colors::{print_dots, BLUE, CYAN, RESET};
use crate::desktop::get_desktop_info;
use crate::release::{get_os_pretty_name, get_system_info};
use crate::system::{get_memory_usage, get_root_disk_usage, get_shell, get_username_and_hostname};
use crate::uptime::get_current;
use color_eyre::Report;
use nix::sys::sysinfo::sysinfo;
fn main() -> Result<(), Report> {
color_eyre::install()?;
let fields = Fields {
user_info: get_username_and_hostname()?,
os_name: get_os_pretty_name()?,
kernel_version: get_system_info()?,
shell: get_shell()?,
uptime: get_current()?,
window_manager: get_desktop_info()?,
memory_usage: get_memory_usage(sysinfo()?),
storage: get_root_disk_usage()?,
colors: print_dots()?,
};
print_system_info(&fields);
Ok(())
}
// 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,
window_manager: String,
memory_usage: String,
storage: String,
colors: String,
}
fn print_system_info(fields: &Fields) {
println!(
"
{CYAN} ▟█▖ {BLUE}▝█▙ ▗█▛ {user_info} ~{RESET}
{CYAN} ▗▄▄▟██▄▄▄▄▄{BLUE}▝█▙█▛ {CYAN}{CYAN}{BLUE}System{RESET}{os_name}
{CYAN} ▀▀▀▀▀▀▀▀▀▀▀▘{BLUE}▝██ {CYAN}▟█▖ {CYAN}{BLUE}Kernel{RESET}{kernel_version}
{BLUE} ▟█▛ {BLUE}▝█▘{CYAN}▟█▛ {CYAN}{BLUE}Shell{RESET}{shell}
{BLUE}▟█████▛ {CYAN}▟█████▛ {CYAN}{BLUE}Uptime{RESET}{uptime}
{BLUE} ▟█▛{CYAN}▗█▖ {CYAN}▟█▛ {CYAN}{BLUE}WM{RESET}{window_manager}
{BLUE} ▝█▛ {CYAN}██▖{BLUE}▗▄▄▄▄▄▄▄▄▄▄▄ {CYAN}󰍛 {BLUE}Memory{RESET}{memory_usage}
{BLUE}{CYAN}▟█▜█▖{BLUE}▀▀▀▀▀██▛▀▀▘ {CYAN}󱥎 {BLUE}Storage (/){RESET}{storage}
{CYAN} ▟█▘ ▜█▖ {BLUE}▝█▛ {CYAN}{BLUE}Colors{RESET}{colors}
",
user_info = fields.user_info,
os_name = fields.os_name,
kernel_version = fields.kernel_version,
shell = fields.shell,
uptime = fields.uptime,
window_manager = fields.window_manager,
memory_usage = fields.memory_usage,
storage = fields.storage,
colors = fields.colors,
);
}