mirror of
https://github.com/LGUG2Z/komorebi.git
synced 2026-07-10 07:02:44 +02:00
fix(wm): add retries to socket connections
This commit is contained in:
@@ -743,8 +743,14 @@ impl WindowManager {
|
|||||||
};
|
};
|
||||||
|
|
||||||
let socket = DATA_DIR.join("komorebic.sock");
|
let socket = DATA_DIR.join("komorebic.sock");
|
||||||
let mut stream = UnixStream::connect(socket)?;
|
|
||||||
stream.write_all(state.as_bytes())?;
|
let mut connected = false;
|
||||||
|
while !connected {
|
||||||
|
if let Ok(mut stream) = UnixStream::connect(&socket) {
|
||||||
|
connected = true;
|
||||||
|
stream.write_all(state.as_bytes())?;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
SocketMessage::VisibleWindows => {
|
SocketMessage::VisibleWindows => {
|
||||||
let mut monitor_visible_windows = HashMap::new();
|
let mut monitor_visible_windows = HashMap::new();
|
||||||
@@ -768,8 +774,14 @@ impl WindowManager {
|
|||||||
};
|
};
|
||||||
|
|
||||||
let socket = DATA_DIR.join("komorebic.sock");
|
let socket = DATA_DIR.join("komorebic.sock");
|
||||||
let mut stream = UnixStream::connect(socket)?;
|
|
||||||
stream.write_all(visible_windows_state.as_bytes())?;
|
let mut connected = false;
|
||||||
|
while !connected {
|
||||||
|
if let Ok(mut stream) = UnixStream::connect(&socket) {
|
||||||
|
connected = true;
|
||||||
|
stream.write_all(visible_windows_state.as_bytes())?;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
SocketMessage::Query(query) => {
|
SocketMessage::Query(query) => {
|
||||||
@@ -789,8 +801,14 @@ impl WindowManager {
|
|||||||
.to_string();
|
.to_string();
|
||||||
|
|
||||||
let socket = DATA_DIR.join("komorebic.sock");
|
let socket = DATA_DIR.join("komorebic.sock");
|
||||||
let mut stream = UnixStream::connect(socket)?;
|
|
||||||
stream.write_all(response.as_bytes())?;
|
let mut connected = false;
|
||||||
|
while !connected {
|
||||||
|
if let Ok(mut stream) = UnixStream::connect(&socket) {
|
||||||
|
connected = true;
|
||||||
|
stream.write_all(response.as_bytes())?;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
SocketMessage::ResizeWindowEdge(direction, sizing) => {
|
SocketMessage::ResizeWindowEdge(direction, sizing) => {
|
||||||
self.resize_window(direction, sizing, self.resize_delta, true)?;
|
self.resize_window(direction, sizing, self.resize_delta, true)?;
|
||||||
@@ -1258,39 +1276,64 @@ impl WindowManager {
|
|||||||
let schema = serde_json::to_string_pretty(&asc)?;
|
let schema = serde_json::to_string_pretty(&asc)?;
|
||||||
let socket = DATA_DIR.join("komorebic.sock");
|
let socket = DATA_DIR.join("komorebic.sock");
|
||||||
|
|
||||||
let mut stream = UnixStream::connect(socket)?;
|
let mut connected = false;
|
||||||
stream.write_all(schema.as_bytes())?;
|
while !connected {
|
||||||
|
if let Ok(mut stream) = UnixStream::connect(&socket) {
|
||||||
|
connected = true;
|
||||||
|
stream.write_all(schema.as_bytes())?;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
SocketMessage::NotificationSchema => {
|
SocketMessage::NotificationSchema => {
|
||||||
let notification = schema_for!(Notification);
|
let notification = schema_for!(Notification);
|
||||||
let schema = serde_json::to_string_pretty(¬ification)?;
|
let schema = serde_json::to_string_pretty(¬ification)?;
|
||||||
let socket = DATA_DIR.join("komorebic.sock");
|
let socket = DATA_DIR.join("komorebic.sock");
|
||||||
|
|
||||||
let mut stream = UnixStream::connect(socket)?;
|
let mut connected = false;
|
||||||
stream.write_all(schema.as_bytes())?;
|
while !connected {
|
||||||
|
if let Ok(mut stream) = UnixStream::connect(&socket) {
|
||||||
|
connected = true;
|
||||||
|
stream.write_all(schema.as_bytes())?;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
SocketMessage::SocketSchema => {
|
SocketMessage::SocketSchema => {
|
||||||
let socket_message = schema_for!(SocketMessage);
|
let socket_message = schema_for!(SocketMessage);
|
||||||
let schema = serde_json::to_string_pretty(&socket_message)?;
|
let schema = serde_json::to_string_pretty(&socket_message)?;
|
||||||
let socket = DATA_DIR.join("komorebic.sock");
|
let socket = DATA_DIR.join("komorebic.sock");
|
||||||
|
|
||||||
let mut stream = UnixStream::connect(socket)?;
|
let mut connected = false;
|
||||||
stream.write_all(schema.as_bytes())?;
|
while !connected {
|
||||||
|
if let Ok(mut stream) = UnixStream::connect(&socket) {
|
||||||
|
connected = true;
|
||||||
|
stream.write_all(schema.as_bytes())?;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
SocketMessage::StaticConfigSchema => {
|
SocketMessage::StaticConfigSchema => {
|
||||||
let socket_message = schema_for!(StaticConfig);
|
let socket_message = schema_for!(StaticConfig);
|
||||||
let schema = serde_json::to_string_pretty(&socket_message)?;
|
let schema = serde_json::to_string_pretty(&socket_message)?;
|
||||||
let socket = DATA_DIR.join("komorebic.sock");
|
let socket = DATA_DIR.join("komorebic.sock");
|
||||||
|
|
||||||
let mut stream = UnixStream::connect(socket)?;
|
let mut connected = false;
|
||||||
stream.write_all(schema.as_bytes())?;
|
while !connected {
|
||||||
|
if let Ok(mut stream) = UnixStream::connect(&socket) {
|
||||||
|
connected = true;
|
||||||
|
stream.write_all(schema.as_bytes())?;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
SocketMessage::GenerateStaticConfig => {
|
SocketMessage::GenerateStaticConfig => {
|
||||||
let config = serde_json::to_string_pretty(&StaticConfig::from(&*self))?;
|
let config = serde_json::to_string_pretty(&StaticConfig::from(&*self))?;
|
||||||
let socket = DATA_DIR.join("komorebic.sock");
|
let socket = DATA_DIR.join("komorebic.sock");
|
||||||
|
|
||||||
let mut stream = UnixStream::connect(socket)?;
|
let mut connected = false;
|
||||||
stream.write_all(config.as_bytes())?;
|
while !connected {
|
||||||
|
if let Ok(mut stream) = UnixStream::connect(&socket) {
|
||||||
|
connected = true;
|
||||||
|
stream.write_all(config.as_bytes())?;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
SocketMessage::RemoveTitleBar(_, ref id) => {
|
SocketMessage::RemoveTitleBar(_, ref id) => {
|
||||||
let mut identifiers = NO_TITLEBAR.lock();
|
let mut identifiers = NO_TITLEBAR.lock();
|
||||||
|
|||||||
+10
-2
@@ -1136,8 +1136,16 @@ enum SubCommand {
|
|||||||
|
|
||||||
pub fn send_message(bytes: &[u8]) -> Result<()> {
|
pub fn send_message(bytes: &[u8]) -> Result<()> {
|
||||||
let socket = DATA_DIR.join("komorebi.sock");
|
let socket = DATA_DIR.join("komorebi.sock");
|
||||||
let mut stream = UnixStream::connect(socket)?;
|
|
||||||
Ok(stream.write_all(bytes)?)
|
let mut connected = false;
|
||||||
|
while !connected {
|
||||||
|
if let Ok(mut stream) = UnixStream::connect(&socket) {
|
||||||
|
connected = true;
|
||||||
|
stream.write_all(bytes)?;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
fn with_komorebic_socket<F: Fn() -> Result<()>>(f: F) -> Result<()> {
|
fn with_komorebic_socket<F: Fn() -> Result<()>>(f: F) -> Result<()> {
|
||||||
|
|||||||
Reference in New Issue
Block a user