detect-desktop-environment 0.2.0

Autodetect the desktop environment
Documentation
use ::std::env;

#[derive(Debug, PartialEq, Eq)]
pub enum DesktopEnvironment {
  Unknown,
  Cinnamon,
  Enlightenment,
  Gnome,
  Kde,
  Lxde,
  Lxqt,
  MacOs,
  Mate,
  Unity,
  Windows,
  Xfce,
}

impl DesktopEnvironment {
  #[cfg(target_os = "macos")]
  pub fn detect() -> Self {
    DesktopEnvironment::MacOs
  }

  #[cfg(target_os = "windows")]
  pub fn detect() -> Self {
    DesktopEnvironment::Windows
  }

  #[cfg(not(any(target_os = "macos", target_os = "windows")))]
  pub fn detect() -> Self {
    match env::var("XDG_CURRENT_DESKTOP") {
      Err(_) => DesktopEnvironment::Unknown,
      Ok(current_desktop) => {
        match current_desktop.as_str() {
          "Cinnamon" => DesktopEnvironment::Cinnamon,
          "ENLIGHTENMENT" => DesktopEnvironment::Enlightenment,
          "GNOME" => DesktopEnvironment::Gnome,
          "KDE" => DesktopEnvironment::Kde,
          "LXDE" => DesktopEnvironment::Lxde,
          "LXQt" => DesktopEnvironment::Lxqt,
          "MATE" => DesktopEnvironment::Mate,
          "Unity" => DesktopEnvironment::Unity,
          "X-Cinnamon" => DesktopEnvironment::Cinnamon,
          "XFCE" => DesktopEnvironment::Xfce,
          _ => DesktopEnvironment::Unknown,
        }
      }
    }
  }
}