basic functionality reached

This commit is contained in:
2025-03-03 20:19:18 +01:00
parent 209e83a8ad
commit e11dabd167
2 changed files with 27 additions and 23 deletions

View File

@@ -4,5 +4,5 @@ version = "0.1.0"
edition = "2024" edition = "2024"
[dependencies] [dependencies]
async-std = "1.13.0" serde = { version = "1", features = ["derive"] }
tokio = { version = "1.43.0", features = ["rt", "rt-multi-thread", "macros"] } serde_json = "1"

View File

@@ -1,11 +1,16 @@
use std::{env, io}; use std::{env, thread};
use std::io::Read; use std::io::{BufRead, BufReader};
use async_std::os::unix::net::UnixStream; use std::os::unix::net::UnixStream;
use async_std::prelude::*; use serde::{Serialize, Deserialize};
use async_std::task::spawn;
async fn create_socket(socket_path : String) -> UnixStream { #[derive(Serialize, Deserialize)]
return match UnixStream::connect(socket_path).await{ struct Event{
event: String,
data: String,
}
fn create_socket(socket_path : String) -> UnixStream {
return match UnixStream::connect(socket_path){
Ok(socket) => { Ok(socket) => {
println!("Connected to socket: {:?}", socket.peer_addr()); println!("Connected to socket: {:?}", socket.peer_addr());
socket socket
@@ -14,12 +19,16 @@ async fn create_socket(socket_path : String) -> UnixStream {
}; };
} }
async fn handle_line_socket2(line : String){ fn handle_event(event : String){
println!("{}", line); let parts = event.split(">>").collect::<Vec<&str>>();
let ev = Event {
event: parts[0].parse().unwrap(),
data: parts[1].parse().unwrap()
};
println!("{}", serde_json::to_string(&ev).unwrap());
} }
#[tokio::main] fn main() {
async fn main() {
let env_var_xdg_runtime_dir = "XDG_RUNTIME_DIR"; let env_var_xdg_runtime_dir = "XDG_RUNTIME_DIR";
let env_var_hyprland_instance_signature = "HYPRLAND_INSTANCE_SIGNATURE"; let env_var_hyprland_instance_signature = "HYPRLAND_INSTANCE_SIGNATURE";
let mut hypr_rundir_path: String = match env::var(env_var_xdg_runtime_dir){ let mut hypr_rundir_path: String = match env::var(env_var_xdg_runtime_dir){
@@ -36,15 +45,10 @@ async fn main() {
let socket2_path = format!("{}/.socket2.sock", hypr_rundir_path); let socket2_path = format!("{}/.socket2.sock", hypr_rundir_path);
println!("Using socket1 path: {}", socket1_path); println!("Using socket1 path: {}", socket1_path);
println!("Using socket2 path: {}", socket2_path); println!("Using socket2 path: {}", socket2_path);
let mut socket1 = create_socket(socket1_path).await; // let socket1 = create_socket(socket1_path);
let mut socket2= create_socket(socket2_path); let socket2= create_socket(socket2_path);
let mut buffer = String::new(); let stream = BufReader::new(socket2);
//TODO: Read from UnixSocket instead from stdin for line in stream.lines() {
loop{ thread::spawn(|| handle_event(line.unwrap()));
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();
} }
} }