diff --git a/hyprman/Cargo.toml b/hyprman/Cargo.toml index 1e8d8bb..ca69c46 100644 --- a/hyprman/Cargo.toml +++ b/hyprman/Cargo.toml @@ -4,3 +4,5 @@ version = "0.1.0" edition = "2024" [dependencies] +async-std = "1.13.0" +tokio = { version = "1.43.0", features = ["rt", "rt-multi-thread", "macros"] } diff --git a/hyprman/src/main.rs b/hyprman/src/main.rs index 1ff4563..570f007 100644 --- a/hyprman/src/main.rs +++ b/hyprman/src/main.rs @@ -1,9 +1,11 @@ -use std::env; +use std::{env, io}; use std::io::Read; -use std::os::unix::net::UnixStream; +use async_std::os::unix::net::UnixStream; +use async_std::prelude::*; +use async_std::task::spawn; -fn create_socket(socket_path : String) -> UnixStream { - return match UnixStream::connect(socket_path){ +async fn create_socket(socket_path : String) -> UnixStream { + return match UnixStream::connect(socket_path).await{ Ok(socket) => { println!("Connected to socket: {:?}", socket.peer_addr()); socket @@ -11,7 +13,13 @@ fn create_socket(socket_path : String) -> UnixStream { Err(error) => panic!("Could not connect to socket: {}", error), }; } -fn main() { + +async fn handle_line_socket2(line : String){ + println!("{}", line); +} + +#[tokio::main] +async fn main() { let env_var_xdg_runtime_dir = "XDG_RUNTIME_DIR"; let env_var_hyprland_instance_signature = "HYPRLAND_INSTANCE_SIGNATURE"; let mut hypr_rundir_path: String = match env::var(env_var_xdg_runtime_dir){ @@ -28,6 +36,15 @@ fn main() { let socket2_path = format!("{}/.socket2.sock", hypr_rundir_path); println!("Using socket1 path: {}", socket1_path); println!("Using socket2 path: {}", socket2_path); - let mut socket1 = create_socket(socket1_path); + let mut socket1 = create_socket(socket1_path).await; let mut socket2= create_socket(socket2_path); -} + let mut buffer = String::new(); + //TODO: Read from UnixSocket instead from stdin + loop{ + io::stdin().read_line(&mut buffer).expect("Could not read line from standard input"); + println!("{} bytes read", buffer.len()); + let line = buffer.trim(); + spawn(handle_line_socket2(line.to_string())); + buffer.clear(); + } +} \ No newline at end of file