From 46cdd0346a8af8fb3e4602374cb17c71b1bee147 Mon Sep 17 00:00:00 2001 From: cyber-sushi Date: Wed, 29 May 2024 06:08:36 +0200 Subject: [PATCH] Check if associated config file exists by matching config properties instead of hashing --- src/active_client.rs | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/active_client.rs b/src/active_client.rs index ba3a06e..d03a34d 100644 --- a/src/active_client.rs +++ b/src/active_client.rs @@ -2,10 +2,10 @@ use crate::Config; use crate::udev_monitor::{Client, Server}; use serde_json; use swayipc_async::Connection; -use std::{collections::HashMap, process::Command}; +use std::process::Command; use x11rb::protocol::xproto::{get_property, get_input_focus, Atom, AtomEnum}; -pub async fn get_active_window(server: &Server, config: &HashMap) -> Client { +pub async fn get_active_window(server: &Server, config: &Vec) -> Client { match server { Server::Connected(server) => { let server_str = server.as_str(); @@ -14,8 +14,8 @@ pub async fn get_active_window(server: &Server, config: &HashMap let query = Command::new("hyprctl").args(["activewindow", "-j"]).output().unwrap(); if let Ok(reply) = serde_json::from_str::(std::str::from_utf8(query.stdout.as_slice()).unwrap()) { let active_window = Client::Class(reply["class"].to_string().replace("\"", "")); - if config.contains_key(&active_window) { - active_window + if let Some(_) = config.iter().find(|&x| x.associations.client == active_window ) { + active_window } else { Client::Default } @@ -34,7 +34,7 @@ pub async fn get_active_window(server: &Server, config: &HashMap }, None => Client::Default }; - if config.contains_key(&active_window) { + if let Some(_) = config.iter().find(|&x| x.associations.client == active_window ) { active_window } else { Client::Default @@ -43,8 +43,8 @@ pub async fn get_active_window(server: &Server, config: &HashMap "KDE" => { if let Ok(query) = Command::new("sh").arg("c").arg("kdotool getactivewindow getwindowclassname").output() { let active_window = Client::Class(std::str::from_utf8(query.stdout.as_slice()).unwrap().trim().to_string()); - if config.contains_key(&active_window) { - active_window + if let Some(_) = config.iter().find(|&x| x.associations.client == active_window ) { + active_window } else { Client::Default } @@ -66,8 +66,8 @@ pub async fn get_active_window(server: &Server, config: &HashMap class = &class[..class.len() -1]; } let active_window = Client::Class(std::str::from_utf8(class).unwrap().to_string()); - if config.contains_key(&active_window) { - active_window + if let Some(_) = config.iter().find(|&x| x.associations.client == active_window ) { + active_window } else { Client::Default }