#[non_exhaustive]pub enum DesktopEnvironment {
Show 22 variants
Cinnamon,
Cosmic,
Dde,
Ede,
Endless,
Enlightenment,
Gnome,
Hyprland,
Kde,
Lxde,
Lxqt,
MacOs,
Mate,
Old,
Pantheon,
Razor,
Rox,
Sway,
Tde,
Unity,
Windows,
Xfce,
}
Expand description
Desktop environments supported by detect-desktop-environment
.
Variants (Non-exhaustive)§
This enum is marked as non-exhaustive
Cinnamon
Cinnamon, the default desktop environment for Linux Mint.
Cosmic
COSMIC, the default desktop environment for Linux Pop!_OS.
Note: This corresponds to the classic COSMIC based on GNOME, not the Rust COSMIC-epoch. Please send a PR if you can test how to detect cosmic-epoch.
Dde
Deepin desktop environment
Ede
EDE Desktop
Endless
Endless OS desktop
Enlightenment
Enlightenment desktop environment.
Gnome
Gnome, the default environment for many major Linux distributions.
Hyprland
Hyprland tiling window manager
Kde
KDE Plasma, the Kool Desktop Environment.
Lxde
Lxqt
MacOs
MacOs, the environment for Apple’s OS
Mate
Old
Legacy menu systems
Listed in Freedesktop Desktop Environments.
Pantheon
Elementary OS Desktop Environment
Razor
Razor-qt
Discontinued Desktop Environment, this is an ancestor of LXQt.
Rox
ROX Desktop
Sway
Sway tiling window manager
Tde
TrinityDesktopEnvironment
Unity
Unity, the legacy desktop environment for Ubuntu
Windows
Windows, the environments for Microsoft’s OS
Xfce
Xfce
Implementations§
source§impl DesktopEnvironment
impl DesktopEnvironment
sourcepub fn detect() -> Option<Self>
pub fn detect() -> Option<Self>
Detect the current desktop environment
If the current desktop environment can’t be detected, None
is returned.
sourcepub const fn gtk(self) -> bool
pub const fn gtk(self) -> bool
Test if the desktop environment is based on the GTK framework
See https://en.wikipedia.org/wiki/Category:Desktop_environments_based_on_GTK
use detect_desktop_environment::DesktopEnvironment;
// All matching desktop environments:
assert!(DesktopEnvironment::Cinnamon.gtk());
assert!(DesktopEnvironment::Cosmic.gtk());
assert!(DesktopEnvironment::Gnome.gtk());
assert!(DesktopEnvironment::Lxde.gtk());
assert!(DesktopEnvironment::Mate.gtk());
assert!(DesktopEnvironment::Unity.gtk());
assert!(DesktopEnvironment::Xfce.gtk());
assert!(DesktopEnvironment::Pantheon.gtk());
assert!(DesktopEnvironment::Dde.gtk());
// Non-GTK examples
assert!(!DesktopEnvironment::Kde.gtk());
assert!(!DesktopEnvironment::Windows.gtk());
sourcepub const fn qt(self) -> bool
pub const fn qt(self) -> bool
Test if the desktop environment is based on the Qt framework
use detect_desktop_environment::DesktopEnvironment;
// All matching desktop environments:
assert!(DesktopEnvironment::Kde.qt());
assert!(DesktopEnvironment::Lxqt.qt());
assert!(DesktopEnvironment::Razor.qt());
assert!(DesktopEnvironment::Tde.qt());
// Non-Qt examples
assert!(!DesktopEnvironment::Gnome.qt());
assert!(!DesktopEnvironment::Windows.qt());
sourcepub fn from_freedesktop(name: &str) -> Option<Self>
pub fn from_freedesktop(name: &str) -> Option<Self>
Parse the desktop environment from the name registered with Freedesktop.org
See https://specifications.freedesktop.org/menu-spec/latest/apb.html
Returns None
if the desktop is not registered.
This function is strictly restricted to the DEs registered with Freedesktop, for a more
complete list use DesktopEnvironment::from_xdg_name
. Note that the check follows the
spec and is case-sensitive.
use detect_desktop_environment::DesktopEnvironment;
assert_eq!("KDE", Some(DesktopEnvironment::Kde));
assert_eq!("kde", None); // must be uppercase
assert_eq!("SWAY", None); // not registered
assert_eq!("unknown_de", None);
sourcepub fn from_xdg_name(name: &str) -> Option<Self>
pub fn from_xdg_name(name: &str) -> Option<Self>
Parse the XDG desktop environment name
This is an extended variant of DesktopEnvironment::from_freedesktop
. It supports all
registered Freedesktop names, as well as some extra unregistered names. This is the
recommended method to parse names from the list in the env var XDG_CURRENT_DESKTOP
.
Returns None
if the name is unknown.
use detect_desktop_environment::DesktopEnvironment;
assert_eq!("KDE", Some(DesktopEnvironment::Kde)); // freedesktop DE
assert_eq!("kde", None); // must be uppercase
assert_eq!("SWAY", Some(DesktopEnvironment::Sway)); // not registered
assert_eq!("unknown_de", None);
sourcepub fn from_xdg_current_desktop(xdg_current_desktop: &str) -> Option<Self>
pub fn from_xdg_current_desktop(xdg_current_desktop: &str) -> Option<Self>
Retrieve the desktop environment from the format used by XDG_CURRENT_DESKTOP
.
XDG_CURRENT_DESKTOP
is a colon separated list of information about the current desktop
environment.
See: https://specifications.freedesktop.org/mime-apps-spec/1.0.1/ar01s02.html
Returns None
if the resolution fails.
Duplicate entries are allowed as long as they correspond to same Desktop Environment.
Trait Implementations§
source§impl Clone for DesktopEnvironment
impl Clone for DesktopEnvironment
source§fn clone(&self) -> DesktopEnvironment
fn clone(&self) -> DesktopEnvironment
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresource§impl Debug for DesktopEnvironment
impl Debug for DesktopEnvironment
source§impl Hash for DesktopEnvironment
impl Hash for DesktopEnvironment
source§impl Ord for DesktopEnvironment
impl Ord for DesktopEnvironment
source§fn cmp(&self, other: &DesktopEnvironment) -> Ordering
fn cmp(&self, other: &DesktopEnvironment) -> Ordering
1.21.0 · source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
fn max(self, other: Self) -> Selfwhere
Self: Sized,
source§impl PartialEq for DesktopEnvironment
impl PartialEq for DesktopEnvironment
source§fn eq(&self, other: &DesktopEnvironment) -> bool
fn eq(&self, other: &DesktopEnvironment) -> bool
self
and other
values to be equal, and is used
by ==
.source§impl PartialOrd for DesktopEnvironment
impl PartialOrd for DesktopEnvironment
source§fn partial_cmp(&self, other: &DesktopEnvironment) -> Option<Ordering>
fn partial_cmp(&self, other: &DesktopEnvironment) -> Option<Ordering>
1.0.0 · source§fn le(&self, other: &Rhs) -> bool
fn le(&self, other: &Rhs) -> bool
self
and other
) and is used by the <=
operator. Read more