diff --git a/src/main.rs b/src/main.rs index 5e71019..15aac16 100644 --- a/src/main.rs +++ b/src/main.rs @@ -45,7 +45,12 @@ fn init_indicator(icon_pack: &IconPack) -> AppIndicator { fn main() { gtk::init().unwrap(); - let mut icon_pack = IconPack::new("./res", "parrot", PackVariant::Dark).unwrap(); + let res_dir = std::env::var("PARROTD_RESOURCE_DIR").unwrap_or("./res".to_owned()); + let pack_name = std::env::var("PARROTD_ICON_PACK").unwrap_or("parrot".to_owned()); + let variant = PackVariant::parse( + &std::env::var("PARROTD_VARIANT").unwrap_or("dark".to_owned())).expect("Invalid variant name"); + + let mut icon_pack = IconPack::new(res_dir, &pack_name, variant).unwrap(); let mut indicator = init_indicator(&icon_pack); // Animation task diff --git a/src/pack.rs b/src/pack.rs index c591787..1d5caa6 100644 --- a/src/pack.rs +++ b/src/pack.rs @@ -2,6 +2,7 @@ use crate::*; use std::path::{Path, PathBuf}; #[allow(dead_code)] +#[derive(Debug)] pub enum PackVariant { Light, Dark, @@ -14,6 +15,14 @@ impl PackVariant { PackVariant::Dark => "dark", } } + + pub fn parse(s: &str) -> Option { + match s { + "light" => Some(PackVariant::Light), + "dark" => Some(PackVariant::Dark), + _ => None + } + } } #[allow(unused)]