feat(system): add OS and kernel detection
Swadhin Biswas committed 8 months ago
6d9d2fb
1 parent 8909588
commit 6d9d2fb
1 file changed
+50 -0
Showing 1 changed file+50-0
▼src/system/mod.rs
+50-0
| @@ -98,3 +98,53 @@ impl SystemInfo { | ||
98 | 98 | packages, |
99 | 99 | shell, |
100 | 100 | resolution, |
101 | + de, | |
102 | + wm, | |
103 | + wm_theme, | |
104 | + theme, | |
105 | + icons, | |
106 | + terminal, | |
107 | + term_font, | |
108 | + cpu, | |
109 | + gpu, | |
110 | + memory, | |
111 | + memory_percent, | |
112 | + disk, | |
113 | + disk_percent, | |
114 | + battery, | |
115 | + local_ip, | |
116 | + public_ip, | |
117 | + locale, | |
118 | + song, | |
119 | + users, | |
120 | + } | |
121 | + } | |
122 | + | |
123 | + /// Format the title line: user@host | |
124 | + #[allow(dead_code)] | |
125 | + pub fn title(&self) -> String { | |
126 | + format!("{}@{}", self.username, self.hostname) | |
127 | + } | |
128 | +} | |
129 | + | |
130 | +// ─── Detection Functions ─────── ───────────────────────────────────── | |
131 | + | |
132 | +fn get_username() -> String { | |
133 | + let user = env_or("USER"); | |
134 | + if !user.is_empty() { | |
135 | + return user; | |
136 | + } | |
137 | + let logname = env_or("LOGNAME"); | |
138 | + if !logname.is_empty() { | |
139 | + return logname; | |
140 | + } | |
141 | + let whoami = run_cmd("whoami", &[]); | |
142 | + if !whoami.is_empty() { | |
143 | + return whoami; | |
144 | + } | |
145 | + "unknown".to_string() | |
146 | +} | |
147 | + | |
148 | +// Helper trait: allow Option-like behavior on String | |
149 | +#[allow(dead_code)] | |
150 | +trait OrElseStr { | |
101 | 151 | |