leenfetch_core/core/data.rs
1use crate::modules::enums::SongInfo;
2
3/// Holds all the collected system information for display.
4/// Each field corresponds to a block or value in the output.
5#[derive(Default, Clone, Debug)]
6pub struct Data {
7 /// Username of the current user (e.g., "snape")
8 pub username: Option<String>,
9 /// Hostname of the machine (e.g., "archbox")
10 pub hostname: Option<String>,
11 /// Base OS name (e.g., "Linux", "Windows")
12 pub os: Option<String>,
13 /// Distro string (format depends on DistroDisplay)
14 pub distro: Option<String>,
15 /// Hardware model (e.g., "ThinkPad X1")
16 pub model: Option<String>,
17 /// Kernel version (e.g., "6.14.6-arch1-1")
18 pub kernel: Option<String>,
19 /// OS installation age string (e.g., "120 days")
20 pub os_age: Option<String>,
21 /// Uptime string (format depends on UptimeShorthand)
22 pub uptime: Option<String>,
23 /// Package count or summary (format depends on PackageShorthand)
24 pub packages: Option<String>,
25 /// Shell name and/or version (e.g., "zsh 5.9")
26 pub shell: Option<String>,
27 /// Window manager name (e.g., "i3", "Mutter")
28 pub wm: Option<String>,
29 /// Desktop environment name (e.g., "GNOME", "KDE")
30 pub de: Option<String>,
31 /// CPU info string (model, speed, cores, etc.)
32 pub cpu: Option<String>,
33 /// List of GPU(s) detected
34 pub gpu: Option<Vec<String>>,
35 /// Memory usage string (format depends on Flags)
36 pub memory: Option<String>,
37 /// List of disk usage entries (label, usage string)
38 pub disk: Option<Vec<(String, String)>>,
39 /// Display resolution (e.g., "1920x1080 @ 60Hz")
40 pub resolution: Option<String>,
41 /// Theme name (GTK/Qt/DE/Windows)
42 pub theme: Option<String>,
43 /// List of battery info strings (format depends on BatteryDisplayMode)
44 pub battery: Option<Vec<String>>,
45 /// Currently playing song info (artist, album, title)
46 pub song: Option<SongInfo>,
47 /// Terminal color palette string
48 pub colors: Option<String>,
49}