aboutsummaryrefslogtreecommitdiffstats
path: root/pkgs
diff options
context:
space:
mode:
authorBenedikt Peetz <benedikt.peetz@b-peetz.de>2025-07-06 10:45:16 +0200
committerBenedikt Peetz <benedikt.peetz@b-peetz.de>2025-07-06 10:45:16 +0200
commitdcf30151c73b0b2d4fd506868966bb4c7dd09a2e (patch)
tree268718935f1db6831fa52499b0d93dbc7b8163bd /pkgs
parentmodules/river/keymap: Support the common `<Super-l>` mapping (diff)
downloadnixos-config-dcf30151c73b0b2d4fd506868966bb4c7dd09a2e.zip
pkgs/tskm/browser/open: Don't fail on stale qutebrowser ipc sockets
Diffstat (limited to 'pkgs')
-rw-r--r--pkgs/by-name/ts/tskm/src/browser/mod.rs32
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![]
};