From 6d262865836a6113c41aee0365aae2f69a86e73d Mon Sep 17 00:00:00 2001 From: Skia Date: Tue, 7 Nov 2023 08:36:08 +0200 Subject: [PATCH] Improve socket discovery, handling, and logging Implement the following logic: * first try SWAYSOCK * if failed, then try I3SOCK, the legacy one coming from i3 * if failed, then we abort with an error --- src/main.rs | 38 +++++++++++++++++++++++++++----------- 1 file changed, 27 insertions(+), 11 deletions(-) diff --git a/src/main.rs b/src/main.rs index cb8590d..258384e 100644 --- a/src/main.rs +++ b/src/main.rs @@ -91,19 +91,35 @@ struct MoveAction { } fn get_stream() -> UnixStream { - let socket_path = match env::var("I3SOCK") { - Ok(val) => val, - Err(_e) => { - panic!("couldn't find i3/sway socket"); + for socket_var in ["SWAYSOCK", "I3SOCK"] { + let socket_path = match env::var(socket_var) { + Ok(val) => val, + Err(_e) => { + eprintln!("{} not found in environment", socket_var); + continue; + } + }; + + let socket = Path::new(&socket_path); + + match UnixStream::connect(&socket) { + Err(_) => { + eprintln!( + "counldn't connect to socket '{}' found in ${}", + socket_path, socket_var + ); + continue; + } + Ok(stream) => { + eprintln!( + "successful connection to socket '{}' found in ${}", + socket_path, socket_var + ); + return stream; + } } - }; - - let socket = Path::new(&socket_path); - - match UnixStream::connect(&socket) { - Err(_) => panic!("couldn't connect to i3/sway socket"), - Ok(stream) => stream, } + panic!("couldn't find any i3/sway socket") } fn send_msg(mut stream: &UnixStream, msg_type: u32, payload: &str) {