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, ); }