#![warn(missing_docs)]
extern crate libc;
#[allow(missing_docs)]
pub enum DesktopEnv {
Gnome,
Windows,
Lxde,
Openbox,
Mate,
Xfce,
Kde,
Cinnamon,
I3,
Mac,
Ios,
Android,
Wasm,
Console,
Ubuntu,
Unknown(String),
}
impl ::std::fmt::Display for DesktopEnv {
fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
use self::DesktopEnv::*;
write!(
f,
"{}",
match self {
Gnome => "gnome".to_string(),
Windows => "windows".to_string(),
Lxde => "lxde".to_string(),
Openbox => "openbox".to_string(),
Mate => "mate".to_string(),
Xfce => "xfce".to_string(),
Kde => "kde".to_string(),
Cinnamon => "cinnamon".to_string(),
I3 => "i3".to_string(),
Mac => "mac".to_string(),
Ios => "ios".to_string(),
Android => "android".to_string(),
Wasm => "wasm".to_string(),
Console => "console".to_string(),
Ubuntu => "ubuntu".to_string(),
Unknown(a) => format!("Unknown: \"{}\"", a),
}
)
}
}
#[cfg(not(target_os = "windows"))]
mod linux;
#[cfg(not(target_os = "windows"))]
use self::linux as native;
#[cfg(target_os = "windows")]
mod windows;
#[cfg(target_os = "windows")]
use self::windows as native;
pub fn username() -> String {
native::username()
}
pub fn user() -> String {
native::realname()
}
pub fn host() -> String {
native::computer()
}
pub fn hostname() -> String {
native::hostname()
}
pub fn os() -> String {
native::os()
}
#[inline(always)]
pub fn env() -> DesktopEnv {
native::env()
}