rustpm 0.2.6

A fast, friendly APT frontend with kernel, desktop, and sources management
/// Static definition of a supported desktop environment.
pub struct DesktopProfile {
    pub id: &'static str,
    pub display_name: &'static str,
    pub packages: &'static [&'static str],
    pub display_manager: &'static str,
    pub optional_extras: &'static [&'static str],
}

pub static PROFILES: &[DesktopProfile] = &[
    DesktopProfile {
        id: "kde",
        display_name: "KDE Plasma",
        packages: &["kde-plasma-desktop", "sddm"],
        display_manager: "sddm",
        optional_extras: &["kde-standard", "plasma-browser-integration"],
    },
    DesktopProfile {
        id: "gnome",
        display_name: "GNOME",
        packages: &["gnome-core", "gdm3"],
        display_manager: "gdm3",
        optional_extras: &["gnome-tweaks", "gnome-shell-extensions"],
    },
    DesktopProfile {
        id: "xfce",
        display_name: "XFCE",
        packages: &["xfce4", "xfce4-goodies", "lightdm"],
        display_manager: "lightdm",
        optional_extras: &["lightdm-gtk-greeter"],
    },
    DesktopProfile {
        id: "mate",
        display_name: "MATE",
        packages: &["mate-desktop-environment", "lightdm"],
        display_manager: "lightdm",
        optional_extras: &["mate-desktop-environment-extras"],
    },
    DesktopProfile {
        id: "lxqt",
        display_name: "LXQt",
        packages: &["lxqt", "sddm"],
        display_manager: "sddm",
        optional_extras: &["lxqt-themes"],
    },
    DesktopProfile {
        id: "cinnamon",
        display_name: "Cinnamon",
        packages: &["cinnamon", "lightdm"],
        display_manager: "lightdm",
        optional_extras: &["nemo"],
    },
];

pub fn find_profile(id: &str) -> Option<&'static DesktopProfile> {
    PROFILES.iter().find(|p| p.id == id.to_lowercase())
}