diff --git a/src/config.rs b/src/config.rs index 0472cc6..e39d7c7 100644 --- a/src/config.rs +++ b/src/config.rs @@ -30,7 +30,7 @@ pub struct RawConfig { pub settings: HashMap, } -#[derive(Debug, Clone)] +#[derive(Default, Debug, Clone)] pub struct MappedModifiers { pub default: Vec, pub custom: Vec, @@ -77,6 +77,16 @@ impl Config { mapped_modifiers, } } + + pub fn new_empty(file_name: String) -> Self { + Self { + name: file_name, + bindings: Default::default(), + combinations: Default::default(), + settings: Default::default(), + mapped_modifiers: Default::default(), + } + } } fn parse_raw_config(raw_config: RawConfig) -> (Bindings, Combinations, HashMap, MappedModifiers) { diff --git a/src/udev_monitor.rs b/src/udev_monitor.rs index 6c45691..e9f415b 100644 --- a/src/udev_monitor.rs +++ b/src/udev_monitor.rs @@ -91,6 +91,9 @@ pub fn launch_tasks(config_files: &Vec, tasks: &mut Vec>) config_map.insert(window_class, config.clone()); }; } + if config_map.len() > 0 && !config_map.contains_key(&"default".to_string()) { + config_map.insert("default".to_string(), Config::new_empty(device.1.name().unwrap().replace("/", ""))); + } let event_device = device.0.as_path().to_str().unwrap().to_string(); if !config_map.is_empty() { let stream = Arc::new(Mutex::new(get_event_stream(Path::new(&event_device), config_map.clone())));