dotfiles/.config/hypr/hyprsome/src/hyprland_ipc/mod.rs

38 lines
1.0 KiB
Rust

pub mod client;
pub mod monitor;
pub mod option;
pub mod workspace;
use std::env;
use std::io::prelude::*;
use std::os::unix::net::UnixStream;
extern crate serde_json;
fn send_message(action: &str, args: Vec<&str>) -> String {
let env_var_name = "HYPRLAND_INSTANCE_SIGNATURE";
let hyprland_instance_sig = match env::var(env_var_name) {
Ok(v) => v,
Err(e) => panic!("${} is not set ({})", env_var_name, e),
};
let socket_path = format!("/tmp/hypr/{}/.socket.sock", hyprland_instance_sig);
let mut stream = match UnixStream::connect(socket_path) {
Err(_) => panic!("server is not running"),
Ok(stream) => stream,
};
let mut message = format!("j/{}", action);
args.into_iter()
.for_each(|a| message.push_str(&format!(" {}", a)));
// TODO: stop being stinky and manage errors
let _ = stream.write_all(message.as_bytes());
let mut response = String::new();
// TODO: stop being stinky and manage errors
let _ = stream.read_to_string(&mut response);
response
}