1use std::fs;
4use std::process::Command;
5use sysinfo::System;
6
7pub fn get_memory_info() -> String {
9 let mut sys = System::new();
10 sys.refresh_memory();
11
12 let total_mem = sys.total_memory();
13 let used_mem = sys.used_memory();
14
15 let total_gb = total_mem as f64 / 1_073_741_824.0;
16 let used_gb = used_mem as f64 / 1_073_741_824.0;
17
18 format!("{used_gb:.2} GiB / {total_gb:.2} GiB")
19}
20
21pub fn get_memory_bytes() -> (u64, u64) {
23 let mut sys = System::new();
24 sys.refresh_memory();
25 (sys.used_memory(), sys.total_memory())
26}
27
28pub fn get_kernel_info() -> String {
30 if let Ok(output) = Command::new("uname").arg("-r").output() {
31 let kernel = String::from_utf8_lossy(&output.stdout).trim().to_string();
32 if !kernel.is_empty() {
33 return kernel;
34 }
35 }
36 "Unknown".to_string()
37}
38
39pub fn get_os_info() -> String {
41 if let Ok(content) = fs::read_to_string("/etc/os-release") {
42 for line in content.lines() {
43 if line.starts_with("PRETTY_NAME=") {
44 if let Some(name) = line.split('=').nth(1) {
45 return name.trim_matches('"').to_string();
46 }
47 }
48 }
49 }
50
51 "Linux".to_string()
52}
53
54pub fn get_uptime() -> String {
56 let uptime_secs = System::uptime();
57 let hours = uptime_secs / 3600;
58 let minutes = (uptime_secs % 3600) / 60;
59
60 if hours > 0 {
61 format!("{hours}h {minutes}m")
62 } else {
63 format!("{minutes}m")
64 }
65}
66
67pub fn get_uptime_seconds() -> u64 {
69 System::uptime()
70}