mirror of
https://gitlab.com/hyask/swaysome.git
synced 2025-12-10 07:44:43 +01:00
lib: refactor SwaySome::new to also have SwaySome::new_from_socket
`SwaySome::new_from_socket` takes a socket path in argument. This allows the tests to be able to build a SwaySome instance with a custom socket path.
This commit is contained in:
parent
ffc73fd832
commit
f7bcdf1296
1 changed files with 28 additions and 26 deletions
54
src/lib.rs
54
src/lib.rs
|
|
@ -49,17 +49,6 @@ struct Workspace {
|
|||
|
||||
impl SwaySome {
|
||||
pub fn new() -> SwaySome {
|
||||
let mut swaysome = SwaySome {
|
||||
socket: Cell::new(Some(SwaySome::get_stream())),
|
||||
outputs: vec![],
|
||||
workspaces: vec![],
|
||||
};
|
||||
swaysome.outputs = swaysome.get_outputs();
|
||||
swaysome.workspaces = swaysome.get_workspaces();
|
||||
swaysome
|
||||
}
|
||||
|
||||
fn get_stream() -> UnixStream {
|
||||
for socket_var in ["SWAYSOCK", "I3SOCK"] {
|
||||
let socket_path = match env::var(socket_var) {
|
||||
Ok(val) => val,
|
||||
|
|
@ -70,27 +59,40 @@ impl SwaySome {
|
|||
};
|
||||
|
||||
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;
|
||||
if socket.is_file() {
|
||||
match SwaySome::new_from_socket(socket) {
|
||||
Ok(swaysome) => return swaysome,
|
||||
Err(e) => eprintln!("Error with value found in ${}: {}", socket_var, e),
|
||||
}
|
||||
}
|
||||
}
|
||||
panic!("couldn't find any i3/sway socket")
|
||||
}
|
||||
|
||||
pub fn new_from_socket(socket: &Path) -> Result<SwaySome, String> {
|
||||
let stream = match UnixStream::connect(&socket) {
|
||||
Err(_) => {
|
||||
return Err(format!(
|
||||
"counldn't connect to socket '{}'",
|
||||
socket.display()
|
||||
));
|
||||
}
|
||||
Ok(stream) => {
|
||||
eprintln!("successful connection to socket '{}'", socket.display());
|
||||
stream
|
||||
}
|
||||
};
|
||||
|
||||
let mut swaysome = SwaySome {
|
||||
socket: Cell::new(Some(stream)),
|
||||
outputs: vec![],
|
||||
workspaces: vec![],
|
||||
};
|
||||
swaysome.outputs = swaysome.get_outputs();
|
||||
swaysome.workspaces = swaysome.get_workspaces();
|
||||
Ok(swaysome)
|
||||
}
|
||||
|
||||
fn send_msg(&self, msg_type: u32, payload: &str) {
|
||||
let payload_length = payload.len() as u32;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue