penguin/utils

my env utils

commit 4176bc23adc2ec3f23fd1c1c8e33422417475ee4

author斟酌 鵬兄 <tgckpg@gmail.com>
date2026-09-07T05:15:13Z
subjectRemoved incorrect cleanup impl
commit 4176bc23adc2ec3f23fd1c1c8e33422417475ee4
Author: 斟酌 鵬兄 <tgckpg@gmail.com>
Date:   2026-09-07T05:15:13Z

    Removed incorrect cleanup impl
---
 bash/sources/42_clipboard_server | 64 ++++++++++++++++++++++++++--------------
 1 file changed, 42 insertions(+), 22 deletions(-)

diff --git a/bash/sources/42_clipboard_server b/bash/sources/42_clipboard_server
index ca7683b..ddde33f 100644
--- a/bash/sources/42_clipboard_server
+++ b/bash/sources/42_clipboard_server
@@ -7,10 +7,34 @@ SSH_CLIPBOARD_PIDFILE="${SSH_CLIPBOARD_PIDFILE:-$SSH_CLIPBOARD_DIR/ssh-clipboard
 SSH_CLIPBOARD_PASTE_PIDFILE="${SSH_CLIPBOARD_PASTE_PIDFILE:-$SSH_CLIPBOARD_DIR/ssh-clipboard-paste.pid}"
 SSH_CLIPBOARD_LOG="${SSH_CLIPBOARD_LOG:-$SSH_CLIPBOARD_DIR/ssh-clipboard.log}"
 
-# These paths are created on the remote host.
-SSH_CLIPBOARD_REMOTE_COPY_SOCKET="/tmp/ssh-clipboard-copy-client.sock"
-SSH_CLIPBOARD_REMOTE_PASTE_SOCKET="/tmp/ssh-clipboard-paste-client.sock"
+SSH_CLIPBOARD_CLIENT_ID="$(
+	hostname |
+		tr '[:upper:]' '[:lower:]' |
+		tr -c 'a-z0-9_.-' '_'
+)"
 
+SSH_CLIPBOARD_REMOTE_COPY_SOCKET="/tmp/ssh-clipboard-copy-${SSH_CLIPBOARD_CLIENT_ID}.sock"
+SSH_CLIPBOARD_REMOTE_PASTE_SOCKET="/tmp/ssh-clipboard-paste-${SSH_CLIPBOARD_CLIENT_ID}.sock"
+
+function _ssh_clipboard_find_remote_socket {
+	local type="$1"
+	local socket found=""
+
+	for socket in /tmp/ssh-clipboard-"$type"-*.sock; do
+		[ -S "$socket" ] || continue
+
+		# More than one clipboard client available.
+		if [ -n "$found" ]; then
+			return 1
+		fi
+
+		found="$socket"
+	done
+
+	[ -n "$found" ] || return 1
+
+	printf '%s\n' "$found"
+}
 
 function clipboard_server_running {
 	local pid
@@ -128,6 +152,14 @@ function sshc {
 		"$@" \
 		>/dev/null 2>&1
 	then
+		echo "-- cleaning stale clipboard sockets"
+
+		command ssh "$@" \
+			"rm -f \
+				'$SSH_CLIPBOARD_REMOTE_COPY_SOCKET' \
+				'$SSH_CLIPBOARD_REMOTE_PASTE_SOCKET'" \
+			</dev/null || return
+
 		echo "-- starting clipboard ssh tunnel"
 
 		command ssh \
@@ -147,16 +179,20 @@ function sshc {
 		"$@"
 }
 
+
 function pbcopy {
-	if [ -n "${SSH_CLIPBOARD_REMOTE_COPY_SOCKET:-}" ] &&
-		[ -S "$SSH_CLIPBOARD_REMOTE_COPY_SOCKET" ]; then
+	local remote_socket
+
+	remote_socket="$(_ssh_clipboard_find_remote_socket copy)"
+
+	if [ -n "$remote_socket" ]; then
 
 		command -v socat >/dev/null 2>&1 || {
 			echo "pbcopy: socat is required for the remote clipboard" >&2
 			return 1
 		}
 
-		socat - "UNIX-CONNECT:$SSH_CLIPBOARD_REMOTE_COPY_SOCKET"
+		socat - "UNIX-CONNECT:$remote_socket"
 		return $?
 	fi
 
@@ -216,22 +252,6 @@ function pbpaste {
 	esac
 }
 
-
-function cleanup_ssh_clipboard {
-	[ -n "${SSH_CONNECTION:-}" ] || return
-
-	[ -S "$SSH_CLIPBOARD_REMOTE_COPY_SOCKET" ] &&
-		rm -f -- "$SSH_CLIPBOARD_REMOTE_COPY_SOCKET"
-
-	[ -S "$SSH_CLIPBOARD_REMOTE_PASTE_SOCKET" ] &&
-		rm -f -- "$SSH_CLIPBOARD_REMOTE_PASTE_SOCKET"
-}
-
-
 if [ -z "${SSH_CONNECTION:-}" ] && init_clipboard_server; then
 	alias ssh='sshc'
 fi
-
-if [ -n "${SSH_CONNECTION:-}" ]; then
-	trap cleanup_ssh_clipboard EXIT HUP TERM
-fi