use indexmap::{indexmap, IndexMap}; use os_info::Type; use serde::{Deserialize, Serialize}; #[derive(Clone, Deserialize, Serialize)] #[cfg_attr( feature = "config-schema", derive(schemars::JsonSchema), schemars(deny_unknown_fields) )] #[serde(default)] pub struct OSConfig<'a> { pub format: &'a str, pub style: &'a str, pub symbols: IndexMap, pub disabled: bool, } impl<'a> OSConfig<'a> { pub fn get_symbol(&self, key: &Type) -> Option<&'a str> { self.symbols.get(key).copied() } } impl<'a> Default for OSConfig<'a> { fn default() -> Self { OSConfig { format: "[$symbol]($style)", style: "bold white", symbols: indexmap! { Type::Alpaquita => "๐Ÿ”” ", Type::Alpine => "๐Ÿ”๏ธ ", Type::Amazon => "๐Ÿ™‚ ", Type::Android => "๐Ÿค– ", Type::Arch => "๐ŸŽ—๏ธ ", Type::Artix => "๐ŸŽ—๏ธ ", Type::CentOS => "๐Ÿ’  ", Type::Debian => "๐ŸŒ€ ", Type::DragonFly => "๐Ÿ‰ ", Type::Emscripten => "๐Ÿ”— ", Type::EndeavourOS => "๐Ÿš€ ", Type::Fedora => "๐ŸŽฉ ", Type::FreeBSD => "๐Ÿ˜ˆ ", Type::Garuda => "๐Ÿฆ… ", Type::Gentoo => "๐Ÿ—œ๏ธ ", Type::HardenedBSD => "๐Ÿ›ก๏ธ ", Type::Illumos => "๐Ÿฆ ", Type::Linux => "๐Ÿง ", Type::Mabox => "๐Ÿ“ฆ ", Type::Macos => "๐ŸŽ ", Type::Manjaro => "๐Ÿฅญ ", Type::Mariner => "๐ŸŒŠ ", Type::MidnightBSD => "๐ŸŒ˜ ", Type::Mint => "๐ŸŒฟ ", Type::NetBSD => "๐Ÿšฉ ", Type::NixOS => "โ„๏ธ ", Type::OpenBSD => "๐Ÿก ", Type::OpenCloudOS => "โ˜๏ธ ", Type::openEuler => "๐Ÿฆ‰ ", Type::openSUSE => "๐ŸฆŽ ", Type::OracleLinux => "๐Ÿฆด ", Type::Pop => "๐Ÿญ ", Type::Raspbian => "๐Ÿ“ ", Type::Redhat => "๐ŸŽฉ ", Type::RedHatEnterprise => "๐ŸŽฉ ", Type::Redox => "๐Ÿงช ", Type::Solus => "โ›ต ", Type::SUSE => "๐ŸฆŽ ", Type::Ubuntu => "๐ŸŽฏ ", Type::Unknown => "โ“ ", Type::Windows => "๐ŸชŸ ", // Future symbols. //aosc => "๏Œ ", //artix => "๏„ค ", //coreos => "๏Œ… ", //devuan => "๏Œ‡ ", //elementary => "๏Œ‰ ", //mageia => "๏Œ ", //mandriva => "๏Œ‘ ", //sabayon => "๏Œ— ", //slackware => "๏Œ˜ ", //void => "๎Š™ ", //solaris => "๏†… ", }, disabled: true, } } }