diff --git a/src/clipboard/persist.rs b/src/clipboard/persist.rs index a677f50..f5312a7 100644 --- a/src/clipboard/persist.rs +++ b/src/clipboard/persist.rs @@ -196,8 +196,7 @@ fn serve_clipboard_child(prepared: PreparedCopy) { }, Err(e) => { - log::error!("clipboard persistence: serve failed: {e}"); - exit(1); + log::debug!("clipboard persistence: serve ended: {e}"); }, } } diff --git a/src/multicall/wl_copy.rs b/src/multicall/wl_copy.rs index 3794420..7948c68 100644 --- a/src/multicall/wl_copy.rs +++ b/src/multicall/wl_copy.rs @@ -222,8 +222,7 @@ fn fork_and_serve(prepared_copy: wl_clipboard_rs::copy::PreparedCopy) { 0 => { // Child process - serve clipboard content if let Err(e) = prepared_copy.serve() { - log::error!("background clipboard service failed: {e}"); - std::process::exit(1); + log::debug!("background clipboard service ended: {e}"); } std::process::exit(0); }, diff --git a/src/multicall/wl_paste.rs b/src/multicall/wl_paste.rs index 5daa1fd..5a893d6 100644 --- a/src/multicall/wl_paste.rs +++ b/src/multicall/wl_paste.rs @@ -456,6 +456,9 @@ fn handle_regular_paste( bail!("no content available and --no-newline specified"); } if let Err(e) = out.write_all(&buf) { + if e.kind() == io::ErrorKind::BrokenPipe { + return Ok(()); + } bail!("failed to write to stdout: {e}"); } @@ -471,12 +474,12 @@ fn handle_regular_paste( || types == "application/x-sh" }; - if !args.no_newline - && is_text_content - && !buf.ends_with(b"\n") - && let Err(e) = out.write_all(b"\n") - { - bail!("failed to write newline to stdout: {e}"); + if !args.no_newline && is_text_content && !buf.ends_with(b"\n") { + if let Err(e) = out.write_all(b"\n") { + if e.kind() != io::ErrorKind::BrokenPipe { + bail!("failed to write newline to stdout: {e}"); + } + } } }, Err(PasteError::NoSeats) => {