2026-01-05 17:57:53 -05:00
|
|
|
// neoarz
|
|
|
|
|
// neo64fetch - "jarvis, rewrite this project in rust"
|
|
|
|
|
|
|
|
|
|
// use colored::*;
|
|
|
|
|
use std::env;
|
|
|
|
|
use sysinfo::System;
|
|
|
|
|
mod helpers;
|
|
|
|
|
|
|
|
|
|
struct Stats {
|
|
|
|
|
// Neoarz[at]Mac
|
|
|
|
|
username: String,
|
|
|
|
|
hostname: String,
|
|
|
|
|
// --------------
|
|
|
|
|
os: String,
|
|
|
|
|
host: String,
|
|
|
|
|
kernel: String,
|
|
|
|
|
uptime: String,
|
|
|
|
|
packages: String,
|
|
|
|
|
shell: String,
|
|
|
|
|
display: String,
|
2026-01-05 20:42:12 -05:00
|
|
|
desktop_env: String,
|
|
|
|
|
window_manager: String,
|
|
|
|
|
window_manager_theme: String,
|
|
|
|
|
font: String,
|
|
|
|
|
cursor: String,
|
|
|
|
|
terminal: String,
|
|
|
|
|
terminal_font: String,
|
2026-01-05 17:57:53 -05:00
|
|
|
|
2026-01-05 20:42:12 -05:00
|
|
|
// Extra fields
|
2026-01-05 17:57:53 -05:00
|
|
|
architecture: String,
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
fn main() {
|
|
|
|
|
let mut sys = System::new_all();
|
|
|
|
|
sys.refresh_all();
|
|
|
|
|
|
|
|
|
|
let stats = Stats {
|
|
|
|
|
hostname: System::host_name().unwrap_or_else(|| "<unknown>".to_owned()),
|
|
|
|
|
username: env::var("USER")
|
|
|
|
|
.or_else(|_| env::var("USERNAME"))
|
|
|
|
|
.unwrap_or_else(|_| "<unknown>".to_owned()),
|
|
|
|
|
os: System::long_os_version().unwrap_or_else(|| "<unknown>".to_owned()),
|
|
|
|
|
host: System::name().unwrap_or_else(|| "<unknown>".to_owned()),
|
|
|
|
|
architecture: System::cpu_arch(),
|
|
|
|
|
kernel: System::kernel_long_version(),
|
|
|
|
|
uptime: helpers::uptime::get_uptime(System::uptime()),
|
|
|
|
|
packages: helpers::packages::get_brew_info(),
|
|
|
|
|
shell: helpers::shell::get_shell_info(),
|
|
|
|
|
display: helpers::display::get_display_info(),
|
2026-01-05 20:42:12 -05:00
|
|
|
desktop_env: helpers::desktop_env::get_desktop_env_info(),
|
|
|
|
|
window_manager: helpers::wm::get_window_manager_info().wm_pretty_name,
|
|
|
|
|
window_manager_theme: helpers::wm_theme::get_wm_theme_info(),
|
|
|
|
|
font: helpers::font::get_font_info(),
|
|
|
|
|
cursor: helpers::cursor::get_cursor_info(),
|
|
|
|
|
terminal: helpers::terminal::get_terminal_info(),
|
|
|
|
|
terminal_font: helpers::terminal_font::get_terminal_font_info(),
|
2026-01-05 17:57:53 -05:00
|
|
|
};
|
|
|
|
|
|
2026-01-05 20:42:12 -05:00
|
|
|
// TODO: Add ascii art support later
|
2026-01-05 17:57:53 -05:00
|
|
|
// Testing each component separately; going to comment out at the end
|
|
|
|
|
{
|
|
|
|
|
println!("{}", stats.username);
|
|
|
|
|
println!("{}", stats.hostname);
|
|
|
|
|
println!("{}", stats.os);
|
|
|
|
|
println!("{}", stats.host);
|
|
|
|
|
println!("{}", stats.architecture);
|
|
|
|
|
println!("{}", stats.kernel);
|
|
|
|
|
println!("{}", stats.uptime);
|
|
|
|
|
println!("{}", stats.packages);
|
|
|
|
|
println!("{}", stats.shell);
|
|
|
|
|
println!("{}", stats.display);
|
2026-01-05 20:42:12 -05:00
|
|
|
println!("{}", stats.desktop_env);
|
|
|
|
|
println!("{}", stats.window_manager);
|
|
|
|
|
println!("{}", stats.window_manager_theme);
|
|
|
|
|
println!("{}", stats.font);
|
|
|
|
|
println!("{}", stats.cursor);
|
|
|
|
|
println!("{}", stats.terminal);
|
|
|
|
|
println!("{}", stats.terminal_font);
|
2026-01-05 17:57:53 -05:00
|
|
|
}
|
|
|
|
|
}
|