diff options
author | Benedikt Peetz <benedikt.peetz@b-peetz.de> | 2025-07-06 10:45:16 +0200 |
---|---|---|
committer | Benedikt Peetz <benedikt.peetz@b-peetz.de> | 2025-07-06 10:45:16 +0200 |
commit | dcf30151c73b0b2d4fd506868966bb4c7dd09a2e (patch) | |
tree | 268718935f1db6831fa52499b0d93dbc7b8163bd /pkgs/by-name/ts/tskm/src/browser/mod.rs | |
parent | modules/river/keymap: Support the common `<Super-l>` mapping (diff) | |
download | nixos-config-dcf30151c73b0b2d4fd506868966bb4c7dd09a2e.zip |
pkgs/tskm/browser/open: Don't fail on stale qutebrowser ipc sockets
Diffstat (limited to '')
-rw-r--r-- | pkgs/by-name/ts/tskm/src/browser/mod.rs | 32 |
1 files changed, 28 insertions, 4 deletions
diff --git a/pkgs/by-name/ts/tskm/src/browser/mod.rs b/pkgs/by-name/ts/tskm/src/browser/mod.rs index 29abfcbd..d83bcbc4 100644 --- a/pkgs/by-name/ts/tskm/src/browser/mod.rs +++ b/pkgs/by-name/ts/tskm/src/browser/mod.rs @@ -1,5 +1,5 @@ use std::{ - env, + env, fs, io::Write, os::unix::net::UnixStream, path::PathBuf, @@ -101,9 +101,33 @@ pub fn open_in_browser( ) })); - if ipc_socket_path.exists() { - let mut stream = UnixStream::connect(ipc_socket_path)?; + let socket = if ipc_socket_path.exists() { + match UnixStream::connect(&ipc_socket_path) { + Ok(ok) => Some(ok), + Err(err) => match err.kind() { + std::io::ErrorKind::ConnectionRefused => { + // There is no qutebrowser listening to our connection. + fs::remove_file(&ipc_socket_path).with_context(|| { + format!( + "Failed to remove orphaned qutebrowser socket: {}", + ipc_socket_path.display() + ) + })?; + None + } + _ => Err(err).with_context(|| { + format!( + "Failed to connect to qutebrowser's ipc socket at: {}", + ipc_socket_path.display() + ) + })?, + }, + } + } else { + None + }; + if let Some(mut stream) = socket { let real_url = if let Some(urls) = urls { urls.into_iter().map(|url| url.to_string()).collect() } else { @@ -129,7 +153,7 @@ pub fn open_in_browser( ExitStatus::default() } else { let args = if let Some(urls) = urls { - urls.iter().map(|url| url.to_string()).collect() + urls.iter().map(ToString::to_string).collect() } else { vec![] }; |