fixed the startup bug, where the activewindow client crashes because no single client is there.

This commit is contained in:
2025-03-07 21:48:45 +01:00
parent 423ebd763a
commit c2f36ffc27

View File

@@ -763,8 +763,11 @@ fn run_activewindow_client(config: &Config) {
let mut clients = query_clients(); let mut clients = query_clients();
print_empty_client(); print_empty_client();
for event_line in event_reader.lines() { for event_line in event_reader.lines() {
let event_line = event_line.unwrap();
println!("Read eventline: {}", event_line.clone());
let event: HyprlandEvent = let event: HyprlandEvent =
serde_json::from_str(&event_line.unwrap()).expect("Failed to parse event"); serde_json::from_str(&event_line).expect("Failed to parse event");
println!("Parsed event: {}", serde_json::to_string(&event.clone()).unwrap());
match event { match event {
HyprlandEvent::ActiveWindowV2 { window_address } => { HyprlandEvent::ActiveWindowV2 { window_address } => {
if window_address != "" { if window_address != "" {
@@ -851,8 +854,8 @@ fn connect_unix_socket(config: &Config, subscription_line: String) -> BufReader<
} }
} }
fn print_empty_client(){ fn create_empty_client() -> Client {
let client = Client { Client {
address: "".to_string(), address: "".to_string(),
mapped: false, mapped: false,
hidden: false, hidden: false,
@@ -886,7 +889,10 @@ fn print_empty_client(){
swallowing: "".to_string(), swallowing: "".to_string(),
focus_history_id: 0, focus_history_id: 0,
inhibiting_idle: false, inhibiting_idle: false,
}; }
}
fn print_empty_client(){
let client = create_empty_client();
println!("{}", serde_json::to_string(&client).unwrap()); println!("{}", serde_json::to_string(&client).unwrap());
} }
@@ -906,7 +912,15 @@ fn query_socket(query: &str) -> String {
fn query_active_client() -> Client { fn query_active_client() -> Client {
let query = "j/activewindow"; let query = "j/activewindow";
let response = query_socket(query); let response = query_socket(query);
serde_json::from_str(&response).expect("Failed to parse active window response") if response != "{}" {
serde_json::from_str(&response).unwrap_or_else(|e| {
eprintln!("Failed to parse active window: {}", e);
std::process::exit(1);
})
} else {
info!("Active window is empty.");
create_empty_client()
}
} }
fn query_clients() -> HashMap<String, Client> { fn query_clients() -> HashMap<String, Client> {
let query = "j/clients"; let query = "j/clients";