diff --git a/src/fields.rs b/src/fields.rs index ebead1c..cabcb3c 100644 --- a/src/fields.rs +++ b/src/fields.rs @@ -143,11 +143,15 @@ pub fn get_distro_name() -> Result { Err("error".to_string()) } -pub fn get_kernel() -> Result { +pub fn get_kernel(show_kern_name: bool) -> Result { let uname = nix::sys::utsname::uname(); Ok(format_data( "kernel", - &format!("{} {}", uname.release(), uname.machine()))) + &if show_kern_name { + format!("{}/{} {}", uname.sysname(), uname.machine(), uname.release()) + } else { + format!("{} {}", uname.release(), uname.machine()) + })) } pub fn get_shell() -> Result { diff --git a/src/main.rs b/src/main.rs index 5085eda..09af455 100644 --- a/src/main.rs +++ b/src/main.rs @@ -8,6 +8,7 @@ mod fields; fn main() { let args: Vec = env::args().collect(); + let mut show_kern_name = false; let mut is_christmas = false; let mut ascii_tree: String; @@ -84,6 +85,10 @@ fn main() { break; } + "--kernel-name" | "-k" => { + show_kern_name = true; + } + _ => { invalid_option(arg.to_string()); } @@ -108,7 +113,7 @@ fn main() { // Kernel name - if let Ok(value) = fields::get_kernel() { + if let Ok(value) = fields::get_kernel(show_kern_name) { data_list.push(value); };