use chrono; use hostname; use term_size; use std; use users; use power; pub fn hostname() -> Option { hostname::get_hostname() } pub fn terminal_cols() -> Option { if let Some((w, _h)) = term_size::dimensions() { Some(w) } else { None } } pub fn pwd() -> Option { std::env::current_dir().ok() } pub fn home() -> Option { std::env::var("HOME") .map(|dir| std::path::Path::new(&dir).to_path_buf()) .ok() } pub fn user() -> Option { users::get_current_username() } pub fn is_root() -> bool { users::get_current_uid() == 0 } pub fn time() -> chrono::DateTime { chrono::Local::now() } pub fn power_info() -> power::PowerInfo { power::PowerInfo::new() }